I'm glad you asked because, as it turns out, continue
is not even needed in this case. Here is the simplified code:
while (<>) {
print "$.\n";
close ARGV if eof;
}
I never use continue either; I just copied the code
snippet (and tested it!) from the eof documentation. But, that code also used a next statement, which I deleted since
it was not needed for your purposes. I should have also deleted the continue statement. I Read The Free Manual, as I'm sure you also did, which explains the relationship between continue and next. | [reply] [d/l] [select] |
The continue allows you to call next in the loop without skipping "close ARGV if eof;". | [reply] [d/l] [select] |
Thanks to all who took the time to reply and contribute to the discussion from which I learnt a lot!
Based on the comments made I'd like to summarise the - in my view most elegant - solution to my question here: eof permits to detect the end of file, $ARGV holds the name of the file currently read and $. holds the current line number in that file.
I just tested the following code snippet and it does exactly what I was looking for:
while ( <> )
{
print "Reading line $. in file $ARGV.\n";
$. = 0 if eof;
}
So, thanks again to all of you who contributed!
Cheers -
Pat | [reply] [d/l] [select] |
I'd recommend to follow what toolic advised: close the file instead of manually nulifying $. The value of $. is reset automatically when the file is closed, so the following does what you need:
while (<>) {
print "$ARGV.$.:$_\n";
close ARGV if eof;
}
| [reply] [d/l] |
The continue allows you to call next in the loop without skipping "close ARGV if eof;". | [reply] [d/l] [select] |