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

Dan*_*ilo 1 string perl split file line

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

文件:

line1:item1
line2:item2
line3:item3
line4:item4
line5:item5
line6:item6
Run Code Online (Sandbox Code Playgroud)

和脚本:

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

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

输出:

item2
item4
item6
Run Code Online (Sandbox Code Playgroud)

Ola*_*che 17

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

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

改用它

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