我有一个tsv文件,其中包含两列(称为TG和ESP),它们具有数值或为空。 我想过滤文件,只保留值小于1或无值的行。我写了以下while循环:
while (<FILE>) {
my $line = $_;
chomp $line;
my @c = split('\t', $line);
my $TG = $c[34];
if ( $TG !~ /\s/ || $TG > 1 ) { next; }
my $ESP = $c[39];
if ( $ESP !~ /\s/ || $ESP > 1 ) { next; }
print "$line\n";
由于某些原因,这些if语句导致我的程序跳过文件中的每一行。我希望if语句只跳过那些数值大于1的行。任何想法我做错了什么?
答案 0 :(得分:0)
如果这两个字段中的任何一个不包含空格
,则会跳过$TG !~ /\s/
由于没有&#34; null &#34;在tsv文件中的值,也许您只是想在进行比较之前检查它们是否有数字?
next if $TG =~ /\d/ && $TG > 1;