小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

requireサブルーチンはパッケージ名で修飾する?

requireサブルーチンは、パッケージ名で修飾するとシステム関数やローカルサブルーチンとの区別が明確になります。
パッケージ修飾は、サブルーチン名の前に『&パッケージ名::』の形になります。
尚、ローカルサブルーチンは、package宣言しなくともmainパッケージになります。

tstcall.plソース

use strict;
require 'sub.pl';

&aaa();
&main::aaa();
&sub::aaa();

sub aaa {
    print "---ローカルサブaaa---\n";
}

sub.plソース

package sub;
use strict;
sub aaa {
    print "---requireサブaaa---\n";
}
1;

実行結果

D:\>tstcall.pl
 ---ローカルサブaaa---
 ---ローカルサブaaa---
 ---requireサブaaa---