#! perl -sw use strict; use threads; use threads::shared; our $T //= 5; my $pid :shared; my( $t ) = threads->create( sub{ my @input; $pid = open my $in, '-|', q[ perl -wle"$|++; print() and sleep 1 for 1.. 5" ] or die $!; push @input, $_ while <$in>; return @input; } ); sleep $T; kill 21, $pid; my @input = $t->join; print for @input; __END__ c:\test>junk82 -T=4 Terminating on signal SIGBREAK(21) 1 2 3 4 c:\test>junk82 -T=5 Terminating on signal SIGBREAK(21) 1 2 3 4 5 c:\test>junk82 -T=6 1 2 3 4 5