perl中的"while(<FH>)"和"if(<FH>)"之间有什么区别?

owa*_*agh 3 perl file-io

这有效: -

while (<CONF>) {
  print $_;
}
Run Code Online (Sandbox Code Playgroud)

但这不是: -

if (<CONF>) {
  print $_;
}
Run Code Online (Sandbox Code Playgroud)

并给出关于未初始化值的错误.我在这里错过了什么?

ike*_*ami 5

while (<CONF>)
Run Code Online (Sandbox Code Playgroud)

被改写为

while (defined($_ = <CONF>))
Run Code Online (Sandbox Code Playgroud)

所以你可能想要

if (defined($_ = <CONF>))
Run Code Online (Sandbox Code Playgroud)