Bonjour !
Je vous contacte pour un petit problème :
Pour mon stage, je dois lister les liens entre des fichiers, et notamment des fichiers en perl. Je m'intéresse donc à récupérer les librairies appelées par des "use" ou des "require".
Je récupère donc l'@INC pour savoir où aller chercher ces librairies. Le dernier élément de @INC est le "." (le path courant).
Cependant, quand je fais mes propres tests, je constate que l'on me demande dans les pm le path depuis le pl appelant !
Par exemple, j'ai une arborescence du type :
main.pl
oui/non/file1.pm
oui/non/file2.pm
Et pour appeler le file2.pm depuis le file1.pm (chacun a son propre package), je dois taper :
use oui::non::file2 ;
Au passage, un system('pwd'); dans le main.pl et dans le file1.pm renvoient tous deux le path du dir de main/pl.
La conclusion est donc que le .pl appelle les .pm et que c'est SON @INC qui prime.
Mais je me demandais, quand une librairie peut être utilisée par plusieurs fichiers (par exemple, prenons File. Comment se fait-il qu'il puisse appeler ses propres librairies alors qu'il ne sait pas quel .pl va l'appeler ?
Pour info, j'ai commencé le perl il y a peu, la réponse est donc sûrement évidente pour vous
Merci par avance en tout cas,
Perlement,
Gui
Partager