Perl if的含义(!$)
我有一个Perl脚本正在读取文件。在某些情况下,代码在for循环中使用以下if语句:Perl if的含义(!$),perl,Perl,我有一个Perl脚本正在读取文件。在某些情况下,代码在for循环中使用以下if语句: for (my $i = 0; $i<10 ; $i++ ) { $_ = <INPUT>; if (!$_) {last;} ... for(my$i=0;$i如果条件,即()中的内容,在一个待测试的“真实性”中进行评估。因此,如果它是未定义的,或”(空字符串)或0(或字符串“0”),则为假 该!否定它后面的内容,因此如果(!$)为false(undef或'或
for (my $i = 0; $i<10 ; $i++ ) {
$_ = <INPUT>;
if (!$_) {last;}
...
for(my$i=0;$i如果条件,即()
中的内容,在一个待测试的“真实性”中进行评估。因此,如果它是未定义的,或”
(空字符串)或0
(或字符串“0”
),则为假
该!
否定它后面的内容,因此如果(!$)
为false(undef
或'
或0
或“0”
),则为true。但是,在这种情况下,$\uuu
是从中分配的,因此它的末尾总是有一个换行符——除非
的源已耗尽,在这种情况下
返回未定义的
因此,在这种情况下,if(!$)
测试是否没有更多的内容可从INPUT
读取,如果是这种情况,则退出for
循环
对所示代码的一些注释
- 对于我的$i(0..9)
,C样式的循环也可以写成,这被认为是更好、更可读的。†请参阅,并真正关注
这段代码
$_=<INPUT>
if (!$_) { last; }
...
†如此之多以至于现在即使是核心编译语言也有了它。C++11
引入了
for(auto-var:container)..//(实际上是const-auto&),或auto&,或auto&&
上面链接的标准参考说明
用作传统的for
循环[…]的可读性更高的等价物
另请参阅,检查文件结尾似乎是一种笨拙的方法。更常见的是,这将通过while()
循环来完成,而不是for-loop。一种笨拙的结构if(!${last;}
最好写为最后一个,除非$\u
。建议:google for perl书架-你会发现它很有用。@HenriqueToste很好,我很高兴你喜欢它:)请告诉我是否有更多的帮助,或者如果以后出现问题。
while (<INPUT>) {
...
}