我陷入了 Perl 的一个问题。
我想使用 while 循环读取 1 行中的多列。
我知道我可以使用下面的 shell 脚本来实现这一点
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 将在空白处拆分该变量。