为什么Perl只读取文件中的一半行?

时间:2013-01-07 12:29:52

标签: string perl file split line

我想逐行读取文件,每行分割字符串并打印出来。但脚本只打印偶数行。

文件:

line1:item1
line2:item2
line3:item3
line4:item4
line5:item5
line6:item6

和脚本:

$FILE = "file";
open($FILE, "<", "file") or die("Could not open file.");

while (<$FILE>) {
    my $number = (split ":", <$FILE>)[1];
    print $number;
}

输出:

item2
item4
item6

4 个答案:

答案 0 :(得分:17)

这是因为你每循环读取两行

while (<$FILE>) { # read lines 1, 3, 5
    my $number = (split ":", <$FILE>)[1]; # read lines 2, 4, 6
    print $number;
}

使用此代替

while (<$FILE>) {
    my $number = (split /:/)[1];
    print $number;
}

答案 1 :(得分:4)

<$FILE>会读一行。你在while中读了一行,在split中读了另一行。

答案 2 :(得分:0)

因为你在while中读了1行而在拆分时读了另一行。

答案 3 :(得分:0)

小错误。 您在while中读取了一行,在下一个直接行中读取了另一行(使用拆分)。