[問題] 行列的處理

看板Perl作者 ( only you )時間12年前 (2013/03/11 00:16), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
大家好,小弟有個檔案想處理行列的移動 以下左邊是檔案內容,右邊是想變成的樣子,XXX是其他不會動到的內容 SPEC a1 | 1_1_For_SPEC_a value | SPEC a1 500 | value SPEC a2 | 500 value | SPEC a2 350 | value 1_1_For_SPEC_a | 350 XXX | XXX SPEC c1 | 3_1_For_SPEC_c value | SPEC c1 170 | value SPEC c2 | 170 value | SPEC c2 810 | value 3_1_For_SPEC_c | 810 XXX | XXX 3_2_For_SPEC_c | 3_2_For_SPEC_c | SPEC c1 XXX | value | 170 | SPEC c2 | value | 810 | XXX ----- 我的做法,先開檔讀檔 while(<file>){ chomp; if ($_ =~ /SPEC.*/ .. /\d+_\d+_\S+/){ push @array1, $_; } if (/(\d+_\d+_\S+)/){ print "@array1\n"; } print "$_\n"; } ----- 但是結果會變成這樣 SPEC a1 value 500 SPEC a2 value 350 SPEC a1 value 500 SPEC a2 value 350 1_1_For_SPEC_a XXX SPEC c1 value 170 SPEC c2 value 810 SPEC a1 value 500 SPEC a2 value 350 SPEC c1 value 170 SPEC c2 value 810 3_1_For_SPEC_c XXX SPEC a1 value 500 SPEC a2 value 350 SPEC c1 value 170 SPEC c2 value 810 3_2_For_SPEC_c 請問這個狀況要怎麼修改比較好呢? 感謝大家~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.253.109.130

03/11 01:04, , 1F
"@array" 會把內容用 $" 接起來, 預設是 " ".
03/11 01:04, 1F

03/11 01:04, , 2F
在 while 外面加上 $" = "\n";
03/11 01:04, 2F

03/11 16:43, , 3F
'..'的用法要弄懂還滿不容易的
03/11 16:43, 3F
文章代碼(AID): #1HFB7Jlo (Perl)
文章代碼(AID): #1HFB7Jlo (Perl)