作者hws110 ( only you )
看板Perl
標題[問題] 行列的處理
時間Mon Mar 11 00:16:17 2013
大家好,小弟有個檔案想處理行列的移動
以下左邊是檔案內容,右邊是想變成的樣子,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
推 scwg: "@array" 會把內容用 $" 接起來, 預設是 " ". 03/11 01:04
→ scwg: 在 while 外面加上 $" = "\n"; 03/11 01:04
→ flu:'..'的用法要弄懂還滿不容易的 03/11 16:43