5部 関数リファレンス

our

our EXPR



ourは、mylocalと同様に、変数を宣言するためのものです。our宣言された変数は、グローバル変数をパッケージ名で修飾しなくても使用できるようにします。our宣言はmy宣言と似ていますが、新たにローカル変数を生成するかわりに、カレントパッケージに所属するグローバル変数をパッケージ修飾なしで使えるようにしてくれます。our宣言の有効範囲は、myと同じで、宣言が置かれているブロック、eval、またはファイルの末尾まで有効です。

our宣言は、use strict 'vars'プラグマと共に使用されます。use strict 'vars'プラグマを指定した場合、グローバル変数はパッケージ名で修飾して$package::varのように書く必要がありますが、our宣言により、パッケージ名を省略できます。

ourで宣言した変数は、宣言を行なった時点で有効なパッケージに所属します。package文によって別パッケージに切り替えたとしても、our宣言された変数は、あくまでも宣言時のパッケージに所属すると解釈されます。

ourの使い方

package Foo;
our $bar = 10;

package Bar;
# パッケージFooの$bar
print $bar,"\n";
> 10

関連記事