Синтаксис
*$var
дает вам доступ к набору глобальных переменных по имени.Например, $foo
, @foo
, %foo
и *foo
:
package main;
no strict;
$foo = 'bar'; # global variable!
@main::foo = qw(an array);
%foo = ('hash' => 'table');
open foo, '>', '/tmp/foo';
$self = 'foo';
print "\$$self is ${*$self}\n"; # $foo
print "\@$self is @{*$self}\n"; # @foo
print "\%$self is {",
(map {$_, " => ", *$self->{$_}, ","} keys %{*$self}),
"}\n";
print "Performing operations on the $self filehandle:\n";
print {*$self} "hello world\n";
close *$self;
open X, '<', '/tmp/foo';
print <X>;
close X;
$foo is bar
@foo is an array
%foo is {hash => table,}
Performing operations on the foo filehandle:
hello world
Конечно, в наше современное время со ссылками и лексическими переменными что-нибудь сделанос таким кодом, вероятно, можно было бы сделать лучше.