これは動作します:-
while (<CONF>) {
print $_;
}
しかし、これはしません:-
if (<CONF>) {
print $_;
}
初期化されていない値についてエラーが発生します。ここで何が欠けていますか?
while (<CONF>)
に書き換えられます
while (defined($_ = <CONF>))
だからあなたはおそらく欲しい
if (defined($_ = <CONF>))
ファイルハンドルからの I/O は、それが while ループの唯一の条件である場合にのみ $_ に読み込まれます。これは特殊なケースです。if の $_ には読み込まれません。こちらをご覧ください