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が見える


というようになる。