当前位置:  开发笔记 > 编程语言 > 正文

这个Perl条件有什么作用?

如何解决《这个Perl条件有什么作用?》经验,为你挑选了1个好方法。

我试图从vcake中理解一个特定的Perl代码.通常我会在Perl找到自己的方式,但以下声明让我感到困惑.我怀疑这只是一个错误,但我不完全确定.声明是:

foreach my $seq (keys %$set) {
    if( (defined $set->{$seq}) and (my $numReads >= ($coverage)) ) {
        do something;
    }
    ...
}

$coverage已经在文件的开头定义为标量整数(例如10)并且永远不会再写入.$numReads仅用于上面的行,没有其他地方!

$set另一方面,在循环内部进行了修改,因此条件的第一部分非常有意义.我不明白的是第二部分,因为在我看来,这将总是评估到相同的值,我不明白$numReads>=在这里的意义.有人可以赐教吗?是否涉及隐形自动变量?



1> Aaron Digull..:

my $numReads意思是:在foreach循环的上下文中创建一个新的局部变量.它的初始值是undef,在数值上下文中被视为0.所以代码如下:

if ((...) and (0 >= ($coverage)) ) {
}

这意味着除非$ coverage设置为0或更低,否则永远不会执行"做某事".

如果这是调试代码,我假设$ coverage用于启用/禁用此语句.

我的猜测是:你发现了一个错误.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有