看板 Perl 關於我們 聯絡資訊
目前我有一筆資料,資料格式與內容如下,想要根據/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
cutecpu:http://codepad.org/aOR9fzzx 02/02 00:03
jacobliu:謝謝樓上的程式碼 02/02 10:14