sub recv_data{ if(read_some_data){ return($stuff1, $stuff2); } else { return; } } #### while(($x, $y) = recv_data){ ... } #### while(1){ my($x, $y) = recv_data; last unless defined $x; ... }