У меня есть куча классов, которые выполняют различные операции в сети, и, как мы все знаем, сетевые операции иногда прерываются.Поэтому я думаю сделать что-то вроде этого:
package My::Role::NetworkFetcher {
use Moose::Role;
sub BUILD {
my $self = shift;
local $SIG{ALRM} = sub {
$self->handle_timeout;
};
alarm 60;
}
sub handle_timeout {
die "default timeout handler";
}
}
Я не уверен, что это лучший способ сделать это. кажется, что работает нормально в моих очень простых тестовых случаях, но я не уверен, что угон метода BUILD
объекта или локализация обработчика сигнала таким образом является правильным или даже целесообразным.