0

Perl の問題で立ち往生しています。

while ループを使用して 1 行で複数の列を読み取りたい。

以下のようなシェルスクリプトを使用してこれを達成できることを知っています

cat file.txt|while read field1 field2 field3 field4
do
statement1
statement2
done

Perl で同じことをしたいのですが、これを取得する方法がわかりません。

私を助けてください。

前もってありがとう、スマナ

4

2 に答える 2

2

使用する

perl -F -ane '....' your file

-F フラグは、各フィールドを配列 @F に格納するため、最初のフィールドに $F[0] を使用できます。例えば:

perl -F -ane 'print $F[0]' your file

すべての行の最初のフィールドを出力します

パフォーマンスが気になる場合:

perl -lne "my($f,$s,$t)=split;print 'first='.$f.' second='.$s.' third='.$t" your_file

大きな例については、これもチェックしてください

于 2012-12-30T04:47:50.103 に答える
2

ループでは、これを行うことができます:

#!/usr/bin/perl -w
use strict;

my $file = "MYFILE";
open (my $fh, '<', $file) or die "Can't open $file for read: $!";
my @lines;
while (<$fh>) {
    my ($field1, $field2, $field3) = split;
}
close $fh or die "Cannot close $file: $!";

ループでは、Perl はファイルの次の行に $_ を割り当て、引数がない場合、split はその変数を空白で分割します。

于 2012-12-30T04:53:27.030 に答える