#! perl -slw use strict; my $pid = open IN, '-|', qq[ perl -E"say scalar localtime, sleep 1 for 1.. $ARGV[0]" ] or die $!; eval { local $SIG{ ALRM } = sub { kill -9, $pid; warn 'timeout'; }; alarm 5; waitpid $pid, 0; alarm 0; }; while( ){ print; } __END__ c:\test>junk 3 Tue Jun 8 15:33:04 20101 Tue Jun 8 15:33:05 20101 Tue Jun 8 15:33:06 20101 c:\test>junk 4 Tue Jun 8 15:33:09 20101 Tue Jun 8 15:33:10 20101 Tue Jun 8 15:33:11 20101 Tue Jun 8 15:33:12 20101 c:\test>junk 5 timeout at C:\test\junk.pl line 11.