I'm not sure if this is it (since I don't have 5.004_01 around), but this is what I think is happening.
This code works (it's bad for many reasons, but it works):
open (TEST,"test") || die $!;
mysub (TEST);
sub mysub {
my $fh = shift;
print $fh;
my $txt = <$fh>;
print $txt;
}
as does this
package mypac;
sub mysub {
my $fh = shift;
print $fh;
my $txt = <$fh>;
print $txt;
}
package main;
open (TEST,"test") || die $!;
mypac::mysub ("main::TEST");
The line
mysub (TEST) is called like
mysub ("TEST"). When using a filehandle, you can use a string instead of the filehandle (which is the
my $txt = <$fh>). I'm guessing that perl 5.004_01 had a shared namespace for filehandles, and later versions of perl do not.