[問題] 資料排序

看板Perl作者 (DDDDD)時間13年前 (2012/02/01 17:41), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
目前我有一筆資料,資料格式與內容如下,想要根據/I0/MXX來做排序 (XX代表數字) /I0/M48 region: 1 /I0/M1 region: 2 /I0/M0 region: 2 /I0/M18 region: 1 /I0/M48 region: 1 /I0/M1 region: 2 /I0/M0 region: 2 /I0/M18 region: 1 /I0/M48 region: 1 /I0/M1 region: 2 /I0/M0 region: 2 /I0/M18 region: 1 /I0/M48 region: 1 /I0/M1 region: 2 /I0/M0 region: 2 /I0/M18 region: 2 /I0/M48 region: 1 /I0/M1 region: 2 /I0/M0 region: 2 /I0/M18 region: 1 參考板上資料排序的寫法,加上自己的亂改,程式如下 ######################################################################## #!/usr/bin/perl -w open( IN, "bias_if_sim.op" ) or die "Cannot open file\n"; while ( my @data = <IN> ) { @data = map { substr $_ ,1 } sort map { /\/(\w{1})\d{1}/; $1.$_ } @data; open(OUT,">temp.test")or die "Cannot open!\n"; print OUT "@data"; close (OUT); } close (IN); ######################################################################## 但是在執行時會出現 Use of uninitialized value in concatenation (.) or string at test.pl line 9 , <IN> line 24. 得到的排序完資料為 /I0/M0 region: 2 /I0/M0 region: 2 /I0/M0 region: 2 /I0/M0 region: 2 /I0/M0 region: 2 /I0/M1 region: 2 /I0/M1 region: 2 /I0/M1 region: 2 /I0/M1 region: 2 /I0/M1 region: 2 /I0/M18 region: 1 /I0/M18 region: 1 /I0/M18 region: 1 /I0/M18 region: 1 /I0/M18 region: 2 /I0/M48 region: 1 /I0/M48 region: 1 /I0/M48 region: 1 /I0/M48 region: 1 /I0/M48 region: 1 雖然順利排好,但是有以下幾個問題,想請教板上的先進: 1.要如何修改程式,讓Use of uninitialized value...不要出現? 2.要如何修改程式,讓排序完的資料第一列不要出現空格? 3.我想要相同/I0/MXX間用空白列隔開,該如何修改程式? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.111.135

02/02 00:03, , 1F

02/02 10:14, , 2F
謝謝樓上的程式碼
02/02 10:14, 2F
文章代碼(AID): #1FAGYvqF (Perl)
文章代碼(AID): #1FAGYvqF (Perl)