给定像文本文件这样的矩阵,我想提取包含值>的所有行(\t
是分隔符)。在第3列(pos 2)中的60和值>在第6位(位置5)80并将输出发送到另一个文件。到目前为止我得到了:
#!/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;
有什么问题? Thanks.PS。我发现了类似的问题,但是我的低级别Perl技能使我无法解决问题。
答案 0 :(得分:0)
<
。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
条件。
答案 1 :(得分:0)
我已经复制粘贴代码,因为你刚刚编写它并且我已经替换了文本文件的内容但仍然收到以下错误消息:
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.
对此有何看法?
答案 2 :(得分:0)
我重新创建了文件,标签分开并仍然给出:
Use of uninitialized value $count in print at C:\Perl64\Temp1\ex.pl line 19.
第19行是print $count;