Perl の問題で立ち往生しています。
while ループを使用して 1 行で複数の列を読み取りたい。
以下のようなシェルスクリプトを使用してこれを達成できることを知っています
cat file.txt|while read field1 field2 field3 field4
do
statement1
statement2
done
Perl で同じことをしたいのですが、これを取得する方法がわかりません。
私を助けてください。
前もってありがとう、スマナ
使用する
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
大きな例については、これもチェックしてください
ループでは、これを行うことができます:
#!/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 はその変数を空白で分割します。