在下面的代碼塊我得到這個錯誤爲什麼變量不可用?
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