$rfh_select = new IO::Select( $rfh ) or die "Error setting up IO::Select: $!\n"; while( !(@ready = $rfh_select->can_read( .1 )) ) { #can_read hangs for .1 seconds so wait for it # need to add some code to stop the loop if we wait to long } sysread( $rfh, $results, 9999999 );