my $ch; eval{ $SIG{ALRM} = sub{ die "Waiting finished\n"; }; alarm(10); $ch = ; alarm(0); }; if($@) { print "Timeout happened\n"; } else { print "Got $ch"; }