in reply to Re: How to reset a variable for each file inside a while( <> ) loop?
in thread How to reset a variable for each file inside a while( <> ) loop?

Thanks, toolic - this looks interesting indeed.

Since I am not familiar with the continue structure, can you please explain what exactly it is doing in your code?

Thanks again!

Pat
  • Comment on Re^2: How to reset a variable for each file inside a while( <> ) loop?
  • Download Code

Replies are listed 'Best First'.
Re^3: How to reset a variable for each file inside a while( <> ) loop?
by toolic (Bishop) on Jun 13, 2008 at 16:31 UTC
    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.
Re^3: How to reset a variable for each file inside a while( <> ) loop?
by ikegami (Patriarch) on Jun 13, 2008 at 18:12 UTC
    The continue allows you to call next in the loop without skipping "close ARGV if eof;".
      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
        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; }
Re^3: How to reset a variable for each file inside a while( <> ) loop?
by ikegami (Patriarch) on Jun 13, 2008 at 18:13 UTC
    The continue allows you to call next in the loop without skipping "close ARGV if eof;".