Perl:通过数值或匹配字符串

时间:2014-06-27 00:47:46

标签: regex perl matching

我有一个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的行。任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果这两个字段中的任何一个不包含空格

,则会跳过
$TG !~ /\s/

由于没有&#34; null &#34;在tsv文件中的值,也许您只是想在进行比较之前检查它们是否有数字?

next if $TG =~ /\d/ && $TG > 1;