#! perl -slw use strict; use threads; use Thread::Queue; $|=1; sub tail { my( $file, $Q ) = @_; my $pid = open TAIL, "u:tail --follow=name $file |" or die $!; print "pid:$pid"; END{ kill 9, $pid } while( ) { $Q->enqueue( $_ ); } } my $Q = new Thread::Queue; my $t = threads->new( \&tail, $ARGV[ 0 ], $Q ); while( sleep 1 ) { print 'Here'; printf "Got: %s", $Q->dequeue() while $Q->pending; }