0

我陷入了 Perl 的一个问题。

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

我知道我可以使用下面的 shell 脚本来实现这一点

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 回答