$ perl - foo use strict; use warnings; use IO::Handle; my $filename = shift || $0; my $fh = do {local *FH}; open $fh, $filename or die "failed on $filename: $!\n"; print((\$fh)->input_line_number, "\n") while <$fh>; #1 #print $fh->input_line_number, "\n" while <$fh>; #2 __END__ Name "main::FH" used only once: possible typo at - line 6. 1 2 3 4 5 6 7 8 9 10