Кажется, filehandle
и format
не имеют префиксов, поэтому я не могу получить ссылки на них с помощью таких трюков, как %{*spud}
.
Я что-то пропускаю?
ОБНОВЛЕНИЕ
Как получить доступ к format
?Почему $fd=*STDOUT
и $fd=\*STDOUT
оба работают?
ОБНОВЛЕНИЕ2
Код:
package Foo;
our $spud = 'a scalar';
our @spud = 'an array';
our %spud = (a => 'hash');
sub spud {}
format spud =
.
open 'spud', $0;
my $stash = \%Foo::;
my $name = 'spud';
my $glob = $$stash{$name};
for my $type (qw(SCALAR ARRAY HASH CODE IO FORMAT)) {
#this works
#print *$glob{$type}, $/;
#this doesn't work,only output one row of scalar
print *{$FOO::{spud}}{$type}, $/;
}
Вывод:
[root@perl]# perl tb
SCALAR(0xa4dcf30)
[root@perl]#