Perl においてサブルーチンがどのパッケージで定義されているのかを調べる方法
Perl で、とあるパッケージの中で使用できるサブルーチン (あるいはメソッド、関数、CODE ref) がどこで定義されているのかわからないということがたまにあります。 use を使って別のパッケージのサブルーチンをインポートした場合などがその最たる例でしょう。
Devel::Sub::Which
パッケージを使用してサブルーチンの定義場所を調べる
CPAN モジュールの Devel::Sub::Which を使用すると、指定したサブルーチンが定義されたパッケージがわかります。
use Devel::Sub::Which qw( which ); # AAA::BBB::CCC パッケージで使用できる createXXX というサブルーチンがどこで定義されているのか調べる warn which( 'AAA::BBB::CCC', 'createXXX' ); # CODE ref が定義されたパッケージも調べることができる my $codeXXX = sub { }; warn which( $codeXXX );
便利!