В следующем блоке кода я получаю эту ошибкуПочему переменная недоступна?
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
Update
Если я комментирую линия capture
и ее закрывающую скобку, то он выполняет ожидаемую print
линию.
Я могу запустить код без ошибок. – choroba
Хотя, конечно, возможно, я всегда буду уверен, что буду очень уверен, прежде чем предлагать внешние фреймворки испортить. Особенно те, что были вокруг какое-то время.В то время как ваш вопрос хорош в противном случае и может быть очень полезным для будущих читателей, я бы предположил, что это предложение, которое отвечает за downvotes. – DeVadder
Код, который вы показываете, находится в подпрограмме, правильно? – ysth