1

我想逐行读取文件,并为每一行拆分字符串并打印它。但是脚本只打印偶数行。

文件:

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

4 回答 4

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;
}
于 2013-01-07T12:32:55.843 回答
4

<$FILE>会读一行。您在 while 中读取一行,然后在 split 中读取另一行。

于 2013-01-07T12:32:32.100 回答
0

因为您在此期间阅读了 1 行,而在拆分时又阅读了另一行。

于 2013-01-07T12:32:54.997 回答
0

小错误。您在 while 中读取一行,在下一个直接行中读取另一行(使用 split 的地方)。

于 2013-01-07T12:33:57.403 回答