John W. Krahn wrote: > Wagner, David --- Senior Programmer Analyst --- WGO wrote: >> Larsen, Errin M HMMA/IT wrote: >> >>> Hi Perl-Crunchers, >>> >>> I've got the following code: >>> >>> #!/usr/bin/perl >>> >>> use warnings; >>> use strict; >>> >>> my $logdir = '/some/application/logs'; >>> my @logs = <$logdir/*>; >>> >>> push @ARGV, @logs; >>> while( <> ) { >>> print "$filename:\n$_" if( /with errors/ ); >>> } >>> >>> Of course, my problem is that I'm not filling in $filename in that >>> print statement with a value. I'd really like to be able to put the >>> name of the file the diamond ('<>') operator is currently parsing in >>> there. Is that possible? Do I have access to the individual >>> filenames AS they are being used in the while statement? >> >> >> I believe that $ARGV[0] has the file being processed. > > No, the array @ARGV doesn't change inside the while loop. > > > John > -- > use Perl; > program > fulfillment
Corrct, though the variable $ARGV holds the current file being processed in <>, So you can see by doing something like: use strict; use warnings; printf "Scalar of ARGV: %d\n", scalar(@ARGV); my $MyCurrFile = ''; while ( <> ) { if ( $ARGV ne $MyCurrFile ) { print "Filename: " . $ARGV . "\n"; $MyCurrFile = $ARGV } } Tested and I had 13 files and 13 printed out. I apolgize for the mistake on @ARGV, though if not used in regards to the <>, you can shift, pop, etc like anyother array element. Wags ******************************************************* This message contains information that is confidential and proprietary to FedEx Freight or its affiliates. It is intended only for the recipient named and for the express purpose(s) described therein. Any other use is prohibited. ******************************************************* -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>