我在Perl中遇到問題。使用while循環讀取perl中的多列
我想使用while循環讀取1行中的多個列。
我知道我能做到這一點使用shell腳本像下面
cat file.txt|while read field1 field2 field3 field4
do
statement1
statement2
done
我想在Perl,但不知道如何得到這同樣的事情。
請幫幫我。
由於提前, Sumana
我在Perl中遇到問題。使用while循環讀取perl中的多列
我想使用while循環讀取1行中的多個列。
我知道我能做到這一點使用shell腳本像下面
cat file.txt|while read field1 field2 field3 field4
do
statement1
statement2
done
我想在Perl,但不知道如何得到這同樣的事情。
請幫幫我。
由於提前, Sumana
在一個循環,你可以這樣做:
#!/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將在空白處分割該變量。
使用
perl -F -ane '....' your file
-F標誌將每個字段存儲在數組中@ F.so u可以使用$ 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
我知道數組可以解決這個問題,但這有點冗長,它也使用內存分配許多不需要的值,所以我想檢查一下Perl是否也提供了像shell這樣的更簡單的方法。 – sumana
你想從文件中分割出什麼? –
是的,文件中可能有很多字段,但我只想提取上面顯示的n個字段,然後我將在下面使用這些變量。 我知道數組是可選的,但我想檢查是否有更簡單的方法可用,如shell在這裏提供。 – sumana
@Sumana,不提取n場。第四場之後所有的領域都會被吸引到你的「field4」變量中。 Maruice的回答表現完全一樣。爲了丟棄剩餘的,你需要在perl版本的bash或'undef'中增加一個'_'。 – jordanm