読者です 読者をやめる 読者になる 読者になる

ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

Perl においてサブルーチンがどのパッケージで定義されているのかを調べる方法

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

便利!