Если вы загрузили модуль, просто посмотрите в% INC, но вы должны сделать это по имени файла.
say $INC{"Foo/Bar/Baz.pm"};
Если нет, вы можете использовать Module :: Util или программу module_info, которая поставляется с Module :: Info.
$ module_info Module::Build
Name: Module::Build
Version: 0.30
Directory: /usr/local/lib/site_perl
File: /usr/local/lib/site_perl/Module/Build.pm
Core module: no
Или вы можете пройти через @INC вручную.
my $module = "Foo::Bar";
# Convert from Foo::Bar to Foo/Bar.pm
my $file = $module;
$file =~ s{::}{/};
$file .= ".pm";
my $path;
for my $dir (@INC) {
$path = "$dir/$file";
last if -r $path;
$path = undef;
}
say defined $path ? "$module is found at $path" : "$module not found";
(Полностью кроссплатформенное решение будет использовать File :: Spec вместо объединения с косой чертой.)
Если вам просто нужно быстро найти модуль, perldoc -l
работает хорошо, как упомянул Фэйлэнд, но он не сможет найти модуль без POD.