#! perl -sw use strict; use threads; use Thread::Queue; $|++; my $Q = new Thread::Queue; async { open my $fh, q[ perl -le"$|++; sleep(1), print qq[$$: $_] for 1 .. 100" | ] or die $!; $Q->enqueue( $_ ) while <$fh>; $Q->enqueue( undef ); }->detach; async { open my $fh, q[ perl -le"$|++; sleep(1), print qq[$$: $_] for 1 .. 100" | ] or die $!; $Q->enqueue( $_ ) while <$fh>; $Q->enqueue( undef ); }->detach; for ( 1 .. 2 ) { print while defined( $_ = $Q->dequeue ); }