【问题标题】:role of IF (length($_)) statement in perl scriptperl 脚本中 IF (length($_)) 语句的作用
【发布时间】:2014-04-07 11:31:34
【问题描述】:

我正在浏览一些我前段时间编写的 Perl 脚本,用于对它们进行伪编码。一位朋友帮助编写了这个脚本,但我想知道是否有人可以告诉我 IF (length($_)) 语句的作用?这是整个脚本:

#!/usr/bin/perl
use strict;
use warnings;

my $inDataset = 0;

while(<>)
{
    chomp;
    s/\s*\\$//;
    if(/________/) 
    {
       $inDataset = 1;
    }
    elsif(/-------/) 
    {
        $inDataset = 0;
    }
    elsif($inDataset == 1) 
    {
        if(length($_))
        {
            ProcessData($_);
        }
    }
}

sub ProcessData
{
   my ($line) = @_;
   my @fields = split(/\s+/,$line);

   if($fields[3] =~ /p\.(...)(\d+)(...)/)
   {
      my $native = $1;
      my $resnum = $2;
      my $mutant = $3;

      print "$fields[1] $native $resnum $mutant\n"; 
   }
}

提前感谢您的帮助!

【问题讨论】:

  • 注意:if 语句也可以写成if (length) {,因为length 在不带参数调用时会自动作用于$_。所有这些信息都可以在文档中找到:length

标签: perl


【解决方案1】:

length($_)$_ 的字符返回length

如果length($_) 已定义且非零,则if ( length($_) ) 的计算结果为真。因此,仅当 $_ 包含字符时,您的代码中的条件才会运行 ProcessData($_)

【讨论】:

  • 这意味着它会导致空白行被忽略(跳过)。
猜你喜欢
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 2012-03-15
相关资源
最近更新 更多