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";  
    }
} 

实际输出:

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 回答