北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

型グロブとシンボルテーブル

packageでのuse varsの宣言とmy宣言の違いがわからなくなっていろいろ調べていたら、結局型グロブにたどり着いた。



例えば、*main::foo = *main::hoge は、$main::{foo} = $main::{hoge} と同値だそうだ。型グロブは、シンボルテーブルの要素、と考えていいのかな? また、型グロブに値を代入することは、値の代入というよりはシンボルテーブルの編集、つまり変数名に関するエリアス操作と考えた方がよさそうだ。



さらにもう一押ししてuse varsの実装。中味を見ると、呼び出し元パッケージのシンボルテーブルを無理矢理作成しているように見える。へー。



詳しくはperldoc perlmod辺りで。