ourとlocal宣言
ourはグローバル変数の宣言に使用される。
一般的には、以下のように使う。
use strict; use warning; our $Global; sub hoge { our $Global; # この宣言をせずにも$Globalは使えるが # このようにグローバル宣言を明示するとコードが見やすくなる }
ourは、ネストとは無関係に同じグローバル変数を表す。
つまり、
our $Global = "piyo"; { our $Global = "fuga"; } #ここで$Globalを参照するとfugaが見える
次に、local。
変数に一時的な値を与えたい場合に使用する。
例えば、以下のようにグローバル変数に対してlocal演算子を適用すると、
our $Global = "hoge"; { local $Global = "fuga"; func(); # この関数の先で$Globalを参照するとfugaが見える # func()は、local宣言のスコープ内にいるため } #ここで$Globalを参照するとhogeが見える
というようになる。