请问循环中等待超时后如何自动进入下一个循环

请问循环中等待超时后如何自动进入下一个循环

代码是这样的
#!/usr/bin/perl -w
my @i=(1,2,3,4);
foreach $j(@i){
$SIG{ALRM}=\&timed_out;
print $j;
alarm 3;
my $bug=<>;
print "$bug\n";
}
alarm(0);
print "pig\n";
}

sub timed_out{
die "Got Tired of waiting\n";
}
~

请问一下,如果在四次循环中如果有一次等待用户数据超时后,如何自动进入下一个循环呢?我现在的情况是自动退出了,请大侠指点,谢谢!

timed_out
这个sub是怎么写的啊
您好!time_out我放上去了,其实就是一个提示性的输出,没做处理!
sub timed_out{
die "Got Tired of waiting\n";
}

问题就是在这里啊
timed_out里的die中断的。
我把die改为print后还是不行,它不会自动往下走啊
按照apile的方法问题解决,
my $data = eval{
  local $SIG{ALRM}=sub {die "timeout\n";};
  alarm(10);
  my $data = <AA>;
  return $data;
};
alarm(0);
像這樣..