Perlのour宣言は、パッケージグローバルな変数を宣言するための宣言です。use strictを使った場合は、グローバル宣言はこれを使って宣言する必要があります($main::var などというように、パッケージ名をつけた場合は可能らしい)。
…と、小難しいことを言っても、たいしたことはなく。要するに、our宣言はパッケージ宣言を省略できるという、それだけのようです。
mainパッケージが複数のファイルにまたがっている場合(両方で事前にuse strict宣言をしておいた場合)、our宣言をしたファイルでは、宣言をした変数をグローバル変数として扱えますが、宣言していない方のファイルでは、パッケージ宣言から書かないと使用できません。
たとえば
ファイルA
use strict; our $a = 'message';
ファイルB
use strict; print $a; # エラー print $main::a; # これならOK
でも、そのファイルでも宣言してしまえばパッケージ宣言を省略できるのです。
ファイルA
use strict; our $a = 'message';
ファイルB
use strict; our $a; print $a;
まあ、割と単純なことですが…。
こういう仕組みなんだなと、ちょっと拍子抜けしました。ちゃんちゃん。