型グロブ
テストコード
use strict; use warnings; package Hoge; our $var = "hoge_var"; { our $var2 = "hoge_var2"; } package Foo; #%Hoge:: have hash keys named as var, var2 print join(', ', keys %Hoge::), "\n"; #%Hoge:: have hash values that are type grob my $glob = $Hoge::{'var'}; print $glob, "\n"; #this expression is equal to $Hoge::var print ${$glob}, "\n"; print ${*Hoge::var}, "\n"; print $Hoge::var, "\n";
シンボルテーブル
実体はハッシュ。パッケージ名Packageだったら、そのシンボルテーブルは
%Package::
でアクセスできる。
ハッシュのキーはパッケージ内で使われている変数名、値は型グロブ。
型グロブ
*Package::varの形式。デリファレンスすれば変数を参照できる。*1
例えば、以下はどれも同じものにアクセスしている。*2
${$Package::{'var'}} ${*Package::var} $Package::var
(参考)
http://perldoc.jp/docs/perl/5.8.8/perlmod.pod
http://loafer.jp/mixi/diary/class.xsp?2006-04-15-23-58