Si vous avez chargé le module, regardez dans% INC mais vous devez le faire par nom de fichier.
say $INC{"Foo/Bar/Baz.pm"};
Si ce n'est pas le cas, vous pouvez utiliser Module :: Util ou le programme module_info fourni avec 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
Ou vous pouvez passer par @INC manuellement.
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";
(une solution de plate-forme entièrement cross utiliserait File :: Spec au lieu de se joindre à des barres obliques.)
Si vous avez juste besoin de trouver un module rapide perldoc -l
, fonctionne bien comme Fayland mentionné, mais il ne parvient pas à trouver un module qui n'a pas de POD.
N'oubliez pas que si vous l'extrayez de% INC, vous devez modifier un peu le nom du module. Votre premier exemple devrait être: say $ INC {"Foo/Bar/Baz.pm"} –
Vous avez raison! PS Communauté wiki réponse, vous êtes libre de modifier. – Schwern