我有以下代码从URL请求标头:
#!/usr/bin/env perl
use strict;
use warnings;
use LWP;
use Data::Dumper;
my $request = HTTP::Request -> new ( HEAD => 'http://www.vliruos.be/media/6352100/nss2015_annex_3_budget.xlsx' );
my $agent = LWP::UserAgent -> new;
my $response = $agent -> request ( $request );
print $response -> header ( 'Content-Length');
...
我不知道原因,但请求似乎很慢,对我来说需要10秒以上。我只是想实现一个规则:如果它在10秒内没有返回任何内容,它应该放弃并在print
之后恢复命令。
有谁知道如何实现这个?
答案 0 :(得分:0)
您可以使用SIGALRM
。
$SIG{ALRM} = sub { die "timeout" };
eval {
alarm(10);
# long-time operations here
alarm(0);
};
if ($@) {
if ($@ =~ /timeout/) {
# timed out; do what you will here
} else {
alarm(0); # clear the still-pending alarm
die; # propagate unexpected exception
}
}