Perl:而没有条件

前端之家收集整理的这篇文章主要介绍了Perl:而没有条件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
根据 doc,while语句执行块,只要表达式是 true.我不知道为什么它成为一个空的表达式的无限循环:
while () { # infinite loop
 ...
}

它只是在文档中的不准确?

解决方法

$ perl -MO=Deparse -e 'while () { }'
while (1) {
    ();
}
-e Syntax OK

看来while(){}和while(1){}是等价的。还要注意,空的括号*被插入空块。

预定义编译器行为的另一个示例:

$ perl -MO=Deparse -e 'while (<>) { }'
while (defined($_ = <ARGV>)) {
    ();
}
-e Syntax OK

我会说,这只是文档不报告一个特殊情况。

* – 确切地说,插入存根操作码。它什么都不做,但服务goto目标为enterloop操作码。没有真正的理由注意到这一点。 Deparse表示使用空括号的这个存根操作,因为括号不生成代码

猜你在找的Perl相关文章