$ perl -le 'print $c++ for 0..0xFFFF' > test; ls -l test -rwxr-xr-x 1 user user 382106 2006-11-14 15:04 test $ perl -e 'open F, "test"; print "$! => $_" while ' Bad file descriptor => 0 Bad file descriptor => 1 Bad file descriptor => 2 ... #### #!/usr/bin/perl -Wl use strict; use warnings; $|++; open F, "<", $ARGV[0]; while (1) { last if eof(F); if (defined chomp( local $_ = readline (F) )) { print } else { warn "hmerrm, readline failed : $!"; last; } } # or while (1) { last if eof(F); chomp( local $_ = eval "readline (F)" ); unless ($@) { print; } else { warn "whoops, readline failed : $@"; last; } }