У меня есть сценарий Perl, и я пытаюсь сделать его распечатывать значение для статьи $, когда это ошибка. Сценарий выглядит так:Perl Catch Variable in error
eval{
for my $article($output =~ m/<value lang_id="">(.*?)<\/value>/g)
{
$article =~ s/ /+/g;
$agent->get("someurl");
$agent->follow_link(url_regex => qr/(?i:pdf)/);
my $pdf_data = $agent->content;
open my $ofh, '>:raw', "$article.pdf"
or die "Could not write: $!";
print {$ofh} $pdf_data;
close $ofh;
sleep 10;
}
};
if([email protected]){
print "error: ...: [email protected]\n";
}
Так что, если нет .pdf-файла, код отправляет ошибку, которую я хочу. Но что мне нужно знать, так ли возможно получить имя статьи $, вызвавшей ошибку? Я пытался использовать какую-то глобальную переменную без везения.
По какой-то причине, когда я делаю что он печатает каждый PDF не только те, равный $ статью из за цикл – chrstahl89
ITYM 'печать STDERR«Ошибки обработки статьи $ статьи: $ @ \ п»;' (не '$!'). И вы можете использовать 'warn' вместо' print STDERR'. Но в целом эта работа должна быть; если это не работает для @ chrstahl89, проблема, вероятно, где-то внутри eval. –
@ chrstahl89: Можете ли вы опубликовать фактический код, который «печатает каждый PDF»? –