在下面的代码块我得到这个错误为什么变量不可用?
Variable "$host" is not available at /comp/xx.pm line 404.
其中线404是代码块中的最后一行。
问题
我猜测它是Capture
模块被搞乱了if (defined $host) { ...
,但我该如何解决此问题?
use Capture::Tiny 'capture';
my $host = $::c{slaves}{$id} if (defined $id);
my ($stdout, $stderr, $exit) = capture {
if (defined $host) {
print "---delete $snap on host\n";
} else {
print "----delete $snap on master\n";
}
}; # line 404
更新
如果我评论线capture
和右括号,然后执行预期print
线。
我可以在没有错误的情况下运行代码。 – choroba 2014-10-31 14:09:48
虽然当然可能,但在建议外部框架搞砸之前,我总是确保非常确定。尤其是那些已经存在了一段时间的人。虽然你的问题是好的,否则可能会对未来的读者有所帮助,但我会认为这是建议是负责downvotes。 – DeVadder 2014-10-31 14:20:33
您显示的代码全部在子程序中,对吗? – ysth 2014-10-31 15:58:48