Re: [問題] 關於排序
※ 引述《WalkingIce (會走路的冰塊)》之銘言:
: 如果拿 NO 來做 hash 的 key
: 那 row B 跟 row G 只會剩下一個吧?!
: 我也遇過類似的問題,那時候第一個想法就是想要像 java 一樣
: 全部弄成 object,然後針對 object 的某個值來做比較 [註]
: 只是我不會用 Perl 這樣寫,而且我也不會 Perl 的OO (泣)
: [註] http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html
: 然後,我又繼續用土砲的方式 (對不起,我是鄉民)
: 當每一行我要排序的資料都放入陣列之後,我把那些資料的順序調動
: 把我想要拿來比較的欄位放到最前面,接著 sort 一次
: my @unsort;
: foreach $line(@array) {
: # 很醜的正規表示式, 自己再改一下吧 #
: # 我想拿第二個欄位來比較,所以把 $2 放到最前面 #
: my $new = "$2--$1--$3--$4\n" if $line =~m{(.)\s+(.+)\s\s\s(.+)\s(.+)};
: push(@unsort,$new);
: }
: @sort = sort @unsort;
: print @sort;
: 排序前
: A NO1 2006/10/10 18:36
: B NO2 2007/12/12 16:37
: C NO3 2007/12/13 17:40
: D NO1 2005/01/01 00:01
: G NO2 2007/12/13 17:20
: 程式執行結果
: NO1--A--2006/10/10--18:36
: NO1--D--2005/01/01--00:01
: NO2--B--2007/12/12--16:37
: NO2--G--2007/12/13--17:20
: NO3--C--2007/12/13--17:40
: 啊?什麼?資料輸出的長相不一樣?
: 那...那就同樣的技倆再玩一次啊!
其實我的方法很簡單耶...@@.....不知道是不是我會錯意了....
########程式碼################
open f,"<ttt.txt";
while($line=<f>){
$hash{${[split/\t/,$line]}[1]}=$line;
}
close f;
for $key(sort keys %hash){
print $hash{$key} ;
}
##############################
這樣做出來就不會破壞原本的資料格式....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.124.50.103
推
07/19 21:40, , 1F
07/19 21:40, 1F
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章