Eug*_*kov 3 perl ref filehandle typeglob
我想更好地理解typeglobs并编写小程序:
use Symbol;
open F, '>', \my $var;
t( F );
t( \F );
t( *F );
t( \*F );
sub t {
my $fh = shift;
print ">>$fh<<" . ref( $fh ) ."\n";
}
Run Code Online (Sandbox Code Playgroud)
输出是:
>>F<<
>>SCALAR(0x1e67fc8)<<SCALAR
>>*main::F<<
>>GLOB(0x1e53150)<<GLOB
Run Code Online (Sandbox Code Playgroud)
为什么GLOB仅在最后一种情况下被返回?
t( F ):字符串[1]不是对glob的引用.t( \F ):对字符串的引用不是对glob的引用.t( *F ):glob不是对glob的引用.t( \*F ):对glob的引用是对glob的引用.