【发布时间】:2013-12-19 14:17:05
【问题描述】:
几乎每个编写的 perl 程序都使用这个习语:
{
open(my $fh, '>>', $filename) || die "you lose";
print $fh $blah;
}
但是,我不想死,我只想跳过打印。 所以我写:
{
print "you lose\n" unless (open(my $fh, '>>', $filename) and print $fh $blah);
}
并得到“不能在 ./o.pl 第 5 行使用未定义的值作为符号引用”来解决我的麻烦。
删除 my (bad form) 可以消除此错误,如下所示:
{
my $fh;
print "you lose\n" unless (open($fh, '>>', $filename) and print $fh $blah);
}
但是为什么?
为什么在损坏的代码中,从open(my $fh... 到块结束(})不存在$fh?
【问题讨论】:
-
“几乎每个编写的 perl 程序都使用这个习语” 哦,如果那是真的!
标签: perl