[問題] 資料排序
目前我有一筆資料,資料格式與內容如下,想要根據/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 00:03, 1F
→
02/02 10:14, , 2F
02/02 10:14, 2F
Perl 近期熱門文章
PTT數位生活區 即時熱門文章