使用while循环读取perl中的多个列

时间:2012-12-30 04:37:47

标签: perl shell

我遇到了Perl的问题。

我想使用while循环读取1行中的多个列。

我知道我可以使用下面的shell脚本实现这个目标

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

我想在Perl中做同样的事情,但不明白如何做到这一点。

请帮帮我。

提前致谢, Sumana

2 个答案:

答案 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会将该变量分割为空格。