[EMAIL PROTECTED] wrote:
> 
> As I understand it, <> operator will open all items in @ARGV allowing
> one to do a shell command line of
> 
>    perl.script file1 file2 file3
> 
> and inside perl.script you only need
> 
> while (<>) { ... syntax to read all the files on the command line.
> 
> <> will also open STDIN if the perl script is invoked from a pipe, such
> as
> 
> ls | perl.script
> 
> So, 1. from within perl.script, how can one tell if the input stream is
> coming from
> STDIN or a file that was opened by <>?
> 
> 2. If input stream is not coming from STDIN, but a file, how can one
> tell which file is the current file (assuming multiple files were
> specified on the command line)?

$ARGV will contain the name of the current file or '-' if reading from
STDIN.

$ perl -le'while (<>) {eof && print $ARGV}' test.txt test1.txt
test.txt
test1.txt
$ perl -le'while (<>) {eof && print $ARGV}' < test.txt
-
$ cat test.txt | perl -le'while (<>) {eof && print $ARGV}'           
-



John
-- 
use Perl;
program
fulfillment

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