我有一堆通过网络进行不同操作的类,众所周知,网络操作有时会超时.所以我想做这样的事情:
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方法或以这种方式本地化信号处理程序是正确的,甚至是可取的.