perl中的“while(<fh>)”和“if(<fh>)”有什么区别?</fh> </fh>

时间:2012-09-04 21:42:20

标签: perl file-io

这适用: -

while (<CONF>) {
  print $_;
}

但这不是: -

if (<CONF>) {
  print $_;
}

并提供有关未初始化值的错误。我在这里错过了什么?

2 个答案:

答案 0 :(得分:5)

while (<CONF>)

被重写为

while (defined($_ = <CONF>))

所以你可能想要

if (defined($_ = <CONF>))

答案 1 :(得分:4)

文件句柄中的I / O只有当它是while循环中的唯一条件时才被读取到$ _。这是一个特例。它不会读入if中的$ _。见here