in reply to Equate File Handles?

Don't you simply want open(FILE, $file)?
$ 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.