【发布时间】:2016-09-09 05:27:09
【问题描述】:
给定一个像文本文件这样的矩阵,我想提取所有行(\t 是分隔符)在第 3 列 (pos 2) 中包含值 > 60 并且在第 6 列 (pos 5)并将输出发送到不同的文件。到目前为止,我得到了:
#!/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;
怎么了?谢谢。PS。我发现了类似的问题,但我的 Perl 水平低,无法解决问题。
【问题讨论】:
-
不增加 $count,你可以只做一个 print "$_\n";将行打印到屏幕上。这样,您可以检查是否从 if 语句中获得了正确的行。如果在拆分时遇到问题而您没有获得许多元素,则可能需要使用另一个反斜杠来转义反斜杠。