in reply to Equate File Handles?
$ echo foo > foo.txt $ perl -e'open FILE, $ARGV[0] or die $!; print <FILE>' foo.txt foo $ echo foo | perl -e'open FILE, $ARGV[0] or die $!; print <FILE>' - foo $ perl -e'open FILE, $ARGV[0] or die $!; print <FILE>' 'echo foo |' foo $ perl -e'open FILE, $ARGV[0] or die $!; print <FILE>' 'cat foo.txt |' foo
If you want STDIN to be the default, prepend @ARGV = '-' if !@ARGV;.
$ echo foo | perl -e'@ARGV = "-" if !@ARGV; open FILE, $ARGV[0] or die + $!; print <FILE>' foo
Perl does all of this for you when you use <ARGV> or its shorter form <>.
$ perl -e'print <>' foo.txt foo $ echo foo | perl -e'print <>' - foo $ echo foo | perl -e'print <>' foo $ perl -e'print <>' 'echo foo |' foo $ perl -e'print <>' 'cat foo.txt |' foo
Is there any possible way of equating file handles?
Equating? Sounds like comparing, but I think you mean assigning. If so, yes. FILE is short for *FILE. If you use the latter form, you'll have no problem.
*FILE = *STDIN; $fh = *STDIN; $fh = \*STDIN; # Ref often allowed and even preferred.
|
|---|