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>


Reply via email to