我遇到了Perl的问题。
我想使用while循环读取1行中的多个列。
我知道我可以使用下面的shell脚本实现这个目标
cat file.txt|while read field1 field2 field3 field4
do
statement1
statement2
done
我想在Perl中做同样的事情,但不明白如何做到这一点。
请帮帮我。
提前致谢, Sumana
答案 0 :(得分: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
一个很好的例子:还要检查this
答案 1 :(得分: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将为文件的下一行分配$ _,并且没有args,split会将该变量分割为空格。