パッケージ
パッケージの役割
名前空間を定義する。
デフォルトはmainパッケージ
$var = "hoge"; sub func() { print "$var\n"; } #全部同じ値にアクセスしている print "$var\n"; print "$main::var\n"; &func(); &main::func();
他パッケージからは完全修飾名でアクセス可
package Hoge; $var = "hoge"; sub func() { print "$var\n"; } package Foo; print "$var\n"; #undef print "$Hoge::var\n"; &func(); #undef &Hoge::func();
our宣言で、完全修飾名でなくてもアクセス可
package Hoge; our $var = "hoge"; sub func() { print "$var\n"; } package Foo; print "$var\n"; print "$Hoge::var\n"; &func(); #undef &Hoge::func();
ourで宣言した変数はレキシカルスコープで、パッケージに属する。
my宣言でパッケージと関係のない変数に
package Hoge; my $var = "hoge"; sub func() { print "$var\n"; } package Foo; print "$var\n"; print "$Hoge::var\n"; #undef &func(); #undef &Hoge::func();
myで宣言した変数はレキシカルスコープで、パッケージに属さない。