en Perl, quand je dois utiliser < module name> < version>, le système trouve la .h pour la bibliothèque quelque part dans @INC chemin.
Est-il un moyen fiable pour laquelle le fichier a été chargé?
en Perl, quand je dois utiliser < module name> < version>, le système trouve la .h pour la bibliothèque quelque part dans @INC chemin.
Est-il un moyen fiable pour laquelle le fichier a été chargé?
Oui, %INC
contient le chemin d'accès complet d'un module a été chargé de.
Exemple:
$ perl -M'Data::Dump qw(pp)' -e 'pp(\%INC)'
{
"Data/Dump.pm" => "/usr/share/perl5/Data/Dump.pm",
"Exporter.pm" => "/usr/share/perl/5.10/Exporter.pm",
"List/Util.pm" => "/usr/lib/perl/5.10/List/Util.pm",
"Scalar/Util.pm" => "/usr/lib/perl/5.10/Scalar/Util.pm",
"XSLoader.pm" => "/usr/lib/perl/5.10/XSLoader.pm",
"overload.pm" => "/usr/share/perl/5.10/overload.pm",
"strict.pm" => "/usr/share/perl/5.10/strict.pm",
"vars.pm" => "/usr/share/perl/5.10/vars.pm",
"warnings.pm" => "/usr/share/perl/5.10/warnings.pm",
"warnings/register.pm" => "/usr/share/perl/5.10/warnings/register.pm",
}
perl -M'LWP' -e 'use Data::Dumper; print Dumper \%INC' | grep LWP
Ce sera la liste de la LWP module emplacement sur le disque et aussi la liste des modules chargés à l'intérieur de LWP.
'LWP.pm' => '/usr/lib/perl5/5.10.0/LWP.pm', 'LWP/Protocol.pm' => '/usr/lib/perl5/5.10.0/LWP/Protocol.pm', 'LWP/UserAgent.pm' => '/usr/lib/perl5/5.10.0/LWP/UserAgent.pm',
Vous voulez regarder dans l' %INC
variable qui enregistre le nom du fichier chargé pour les bibliothèques que vous chargez avec do
, require
ou use
. Voir perlvar pour plus de détails.
Il y a un bon nombre de modules CPAN pour trouver cette information, les candidats les plus probables look: Module::Rechercher, Module::Qui, et du Module::Recherchez. Je serais probablement aller avec le Module::Rechercher:
use strict;
use warnings;
use Module::Locate qw/locate/;
my $to_find = "Some::Module";
print "Perl would use: ", scalar locate($to_find), "\n";
Dans un contexte de liste de localiser retourne toutes les copies de Certains::Module en fonction de @INC.
Edit: derobert suggère une bien meilleure façon, je ne savais pas %INC déjà eu... Ce module de solution serait toujours utile si vous avez voulu savoir avant de charger le module où il allait être chargé de.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.