1

ファイルを 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

これは、ループ ラウンドごとに 2 行を読み取るためです。

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 で 1 行を読み、split で別の行を読みます。

于 2013-01-07T12:32:32.100 に答える
0

小さな間違い。while で 1 行を読み取り、次の行 ( split を使用する場所) で別の行を読み取ります。

于 2013-01-07T12:33:57.403 に答える
0

その間に1行を読み、分割時に別の行を読むからです。

于 2013-01-07T12:32:54.997 に答える