[英]Perl: extracting certain values from matrix file
給定像文本文件這樣的矩陣,我想提取所有包含第3列(位置2)中的值> 60和第6列(位置5)中的值> 80的行( \\t
是分隔符)並發送輸出到另一個文件。到目前為止,我得到了:
#!/usr/bin/perl;
use strict;
use warnings;
use diagnostics;
open(my $in, "file.txt")or die $!;
my $line = <$in>;
my $count;
while (<$in>) {
chomp;
my @element = split (/\t/,$_);
if ($element[2] >= 60 && $element[5] > 80){
$count++;
}
}
close $in;
print $count;
怎么了? 謝謝。 我發現了類似的問題,但是我的Perl較低的技能使我無法解決問題。
open
下添加讀取模式( <
)。 下面對我來說很好。
#!/usr/bin/perl
use strict;
use warnings;
open(my $in, "<", "file.txt") or die $!;
my $count;
while (<$in>) {
chomp;
my @element = split (/\t/,$_);
if ($element[2] >= 60 && $element[5] > 80){
$count++;
}
}
close $in;
print $count;
其中file.txt
10 20 60 40 50 90 70 80
10 20 20 40 50 30 70 80
10 20 40 40 50 50 70 80
10 20 65 40 50 80 70 80
10 20 70 40 50 90 70 80
10 20 50 40 50 90 70 80
即文件的第一和第五行滿足if
條件。
我已經復制粘貼代碼,就像您剛剛編寫的那樣,但是我enev替換了文本文件的內容,但仍然收到以下錯誤消息:
Use of uninitialized value $element[2] in numeric ge (>=) at C:\Perl64\Temp1\ex.pl line 12, <$in> line 1.
Use of uninitialized value $element[2] in numeric ge (>=) at C:\Perl64\Temp1\ex.pl line 12, <$in> line 2.
Use of uninitialized value $element[2] in numeric ge (>=) at C:\Perl64\Temp1\ex.pl line 12, <$in> line 3.
Use of uninitialized value $element[2] in numeric ge (>=) at C:\Perl64\Temp1\ex.pl line 12, <$in> line 4.
Use of uninitialized value $element[2] in numeric ge (>=) at C:\Perl64\Temp1\ex.pl line 12, <$in> line 5.
Use of uninitialized value $element[2] in numeric ge (>=) at C:\Perl64\Temp1\ex.pl line 12, <$in> line 6.
Use of uninitialized value $count in print at C:\Perl64\Temp1\ex.pl line 18.
有什么看法嗎?
我重新創建了文件,將制表符分隔並仍然給出:
Use of uninitialized value $count in print at C:\Perl64\Temp1\ex.pl line 19.
第19行是print $count;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.