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


in reply to How do I read the files in @ARGV one by one

The trouble with your code is that <> does advanced magic: it reads in all the files on the command line line by line. You can find out which file you are reading right now by looking at $ARGV.

So for your little problem, you could remember what $ARGV was when you last read a line and check if $ARGV has changed:

my $OLDARGV; while (<>) { push(@data, $ARGV) if $ARGV ne $OLDARGV; push(@data, $_); $OLDARGV=$ARGV; }

But I admit that Masems code is probably easier to figure out.

--
Brigitte    'I never met a chocolate I didnt like'    Jellinek
http://www.horus.com/~bjelli/         http://perlwelt.horus.at