文本文件Perl中的操作

时间:2012-10-10 06:33:47

标签: perl

我有一个看起来像这样的文本文件:

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
...

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

将循环迭代器更改为$i+=2。当你只增加1时,你会在下一个循环中再次获得一些值。

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

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