while ($data = <$fh>) { # do something with $data } if ($fh->READLINE_ERROR) { # but this method doesn't exist # handle readline error } else { # handle EOF } #### while (1) { undef $!; # doesn't really undefine $! $data = readline $fh; # or $fh->readline if (!defined $data) { last unless $!; # EOF # handle readline error } # do something with $data } #### undef $!; while ($data = <$fh>) { # do something with $data } if (defined $!) { # handle readline error }