高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

our宣言

 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;

 まあ、割と単純なことですが…。
こういう仕組みなんだなと、ちょっと拍子抜けしました。ちゃんちゃん。