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 }