1

次のようなテキスト ファイルがあります。

Id:001;status:open;Id:002;status:open;Id:003;status:closed;
Id:004;status:open;Id:005;status:closed;Id:006;status:open;
.... 
....

これが私のコードです:

#!/usr/bin/perl -w
use strict;

open IN, "<", "ABC.txt" 
    or die"Can not open the file $!";

my @split_line;           
while(my $line = <IN>) {

    @split_line = split /;/, $line;

    for (my $i = 0; $i <= $#split_line; $i++) {

        print "$split_line[$i]"." "."$split_line[$i+1]\n";  
    }
} 

実際の O/P:

Id:001 status:open
status:open Id:002
Id:002 status:open
status:open Id:003
Id:003 status:closed
status:closed 
......
......

予想される o/p は次のとおりです。

Id:001      status:open
Id:002      status:open
.....
....

他の行を出力する理由がわかりません。これを手伝ってくれる体はありますか?

申し訳ありませんが、出力を変更する必要があります。

実際、出力は次のようになります

**Id        Status**
001       open
002       open
...

誰かここで私を助けてくれませんか?

4

1 に答える 1

2

ループ反復子を に変更します$i+=2。1 ずつインクリメントしているだけなので、次のループでいくつかの値が再び出力されます。

for (my $i = 0; $i <= $#split_line; $i += 2) {

    print "$split_line[$i]"." "."$split_line[$i+1]\n";
}
于 2012-10-10T06:38:03.890 に答える