標準じゃないモジュールの場所が知りたい
プロジェクト固有のモジュールを使ってるときに、そいつの場所を知りたいときがある。
% tree . |-- lib | `-- Mod.pm `-- main.pl
こんなとき、訳あってMod.pmの場所を得たいとする。Module::Pluggableみたいなことがしたいのだ。
例だから簡単な構造にしてるけど、実際はあんなパスやこんなパスにモジュールがある、なんて場合がたまにある。
MyApp/lib、MyApp/Schema、MyApp/CLI、t/lib、とか。…catalystばっかやんけ。
main.pl
use strict; use warnings; use lib './lib'; use Mod; use FindBin; use Data::Dumper; sub p ($) { print Dumper shift } p $FindBin::RealBin;
だと得られるのはmain.plの場所。
…Mod.pmの場所が欲しいってのに。
こういうの何でやるんだっけーPath::Classだっけーと思ったところで
柔道家: つ Class::Inspector
main.pl
use strict; use warnings; use lib './lib'; use Mod; use Class::Inspector; use Data::Dumper; sub p ($) { print Dumper shift } print Class::Inspector->resolved_filename('Mod'),"\n";
% perl main.pl ./lib/Mod.pm
おお。またしても感謝。
俺「何でこんなモジュール知ってるんですか?」
柔道家「経験の差」
ちょっとずつ埋めていこう。