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---