use Proc::Background; my $proc1 = Proc::Background->new($command, $arg1, $arg2); while( 1 ){ sleep 1; my $newsize = -s $fhorfilename; # if( ( $newsize - $oldsize ) > $minimum ){ if( ( $newsize - $oldsize ) > $buffersize ){ } my $readed = read $fh, $buffer, $buffersize; doStuff( $readed , $fh, $buffer, $buffersize ); ... last if not $proc1->alive; }