http://www.perlmonks.org?node_id=881951


in reply to eof not recognised when applying diamond operator to invocation arguments?

Just in case you're curious...  If you wanted to stick with your original code as closely as possible, here's how you'd have to modify it to get it working as desired (I wouldn't recommend it though):

my @filesnames = @ARGV; for my $input_file ( @filesnames ) { eof(); while ( ! eof ) { print scalar <>; } print "=========SEPARATOR: Processing $input_file =========\n"; }
  • Comment on Re: eof not recognised when applying diamond operator to invocation arguments?
  • Download Code

Replies are listed 'Best First'.
Re^2: eof not recognised when applying diamond operator to invocation arguments?
by pat_mc (Pilgrim) on Jan 13, 2011 at 09:27 UTC
    Why wouldn't you recommend to use this code?

      Mainly because it's unnecessarily hard to understand:  eof(); WTF?  Why does it have to be before the loop? If you move it after the loop, it will work with Perl 5.12 just fine, too, but not with 5.10.  Also, someone (including yourself) looking at this later might figure the additional array @filenames is superfluous (and remove it), etc.

      Any compelling reason you can't use the more direct version you mentioned yourself elsewhere in the thread?

        Any compelling reason you can't use the more direct version you mentioned yourself elsewhere in the thread?
        Yes ... I need to use nested loops because I am reading the input file, parsing the input line and - if and when I find a certain pattern - read 100 lines further. If I use the direct version I will keep losing one line because the inside loop and the outside loop both read an line one after the other.