> -----Message d'origine-----
> De : Perl Mail User [mailto:[EMAIL PROTECTED]
> Envoyé : mardi 18 mai 2004 20:10
> À : [EMAIL PROTECTED]
> Objet : Perl Newbie Question
> 
> Hello All,
> 
> I have a question, I am looking to read the name of the file that I am
> passing as an argument to the perl script through the while (<>) part
of
> the script.
> 
> Example: perl script.pl 1.txt 2.txt 3.txt
> Each file has information that I am parsing to put into a report but I
> need
> to get the name of the file that I parsed and print that information
as
> well,
> so that way I know what values I am getting from each file associates
with
> what file.
> 
> So the output would look like
> 
> 1.txt (parsed information)
> 2.txt (parsed information)
> 3.txt (parsed information)
> 
> Any assistance would be great.
> Thanks

In addition to
perldoc perlvar
suggested in previous posts you may also give a look to
perldoc perlop
and search for "null filehandle".

It's said there :

<my_paste>

The null filehandle <> is special: it can be used to emulate the
behavior of sed and awk. Input from <> comes either from standard input,
or from each file listed on the command line. Here's how it works: the
first time <> is evaluated, the @ARGV array is checked, and if it is
empty, $ARGV[0] is set to ``-'', which when opened gives you standard
input. The @ARGV array is then processed as a list of filenames. The
loop
while (<>) {
        ...                     # code for each line
    }
is equivalent to the following Perl-like pseudo code:

    unshift(@ARGV, '-') unless @ARGV;
    while ($ARGV = shift) {
        open(ARGV, $ARGV);
        while (<ARGV>) {
            ...         # code for each line
        }
    }
except that it isn't so cumbersome to say, and will actually work. It
really does shift the @ARGV array and put the current filename into the
$ARGV variable.

</my_paste>



--
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