# $read is an open pipe from earlier local $SIG{ALRM} = sub { goto('WIBBLE'); }; alarm(60); $result = <$read>; :WIBBLE if ( !defined($result) ) { print "Oh well, I didn't need that anyway...\n"; }