Я отлаживаю действительно странную проблему с долго работающим Perl-скриптом.
Проблема в том, что скрипт не завершается на die()
, как ожидалось. Вместо этого скрипт просто зависает, не возвращаясь.
Я не определял обработчики ошибок самостоятельно, поэтому я предполагаю, что die()
приведет к немедленному завершению сценария.
Это базовая структура скрипта и используемых модулей:
#!/usr/bin/perl
use strict;
use utf8;
use warnings;
use DBI; # with MySQL driver ("dbi:mysql:database=...")
use Geo::IP;
use POSIX;
use URI::Escape;
open(COMMAND, 'command_line |');
while (<COMMAND>) {
#
# .. stuff that can go wrong ..
#
die("I'm expecting the script to terminate here. It doesn't.") if ($gone_wrong);
}
close(COMMAND);
Что может быть объяснением этого поведения? Известен ли какой-либо из используемых модулей для установки обработчиков ошибок, которые могли бы объяснить зависание скрипта на die()
?