IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Le @INC dépend de qui ?


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Par défaut Le @INC dépend de qui ?
    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

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Par défaut
    Toujours aucune idée ?

    J'ai beau enchaîner les topics à ce sujet, je ne trouve personne qui ne se soit vraiment intéressé à ça, dommage !

    Mit'

  3. #3
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    je tente ma chance ^^

    les use/require n'appelle pas ("appeler" dans le sens où ils ne lancent pas un script comme le ferait), ils font comme s'ils incluaient le code des modules appelés dans le code de ton script (en gros).

    ce qui fait que le seul @INC que tu vois c'est celui du script que tu lances.

    ce qui répond aussi à ta 2e question, les librairies se contentent de déclarer d'autres modules via use, tant que ces modules se trouvent dans le path, ils seront trouvés, pas besoin de savoir quel script les appelle.

    cela répond à tes questions ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 54
    Par défaut Comment faire placé un module dans @INC
    Bonjour
    j arrive pas a placé un module que je l'appel dans mon script @INC

    le voila le msg qui aparit sur le terminale:


    Can't locate sta_common.pm in @INC (@INC contains: /home/khantach/ta_functional_ff28_1.15V_125C_FuncCmax/reports.F-2011.06-SP3-2.16/perl_libs /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at ./sta_check_check line 29.
    sur la ligne 29 de mon script: use sta_common;

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Ajoute avant ton use, ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use lib 'chemin_de_sta_common';

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 54
    Par défaut
    il existe deja ce syntaxe dans mon script
    use lib "$ENG_WORKSPACE}/perl_libs";
    use sta_common;
    ca se voir tres bien qu'il existe un autre prob qui manifeste

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/12/2008, 12h06
  2. Retourner une valeur qui dépend de plusieurs lignes
    Par oli43 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 22/10/2008, 16h00
  3. Splash qui dépend de chargement
    Par ouchemhou dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 26/08/2008, 09h56
  4. [NB 5.5] Projet qui dépend d'un autre projet
    Par gifffftane dans le forum NetBeans
    Réponses: 2
    Dernier message: 14/09/2007, 11h02
  5. [Formulaire] champ qui dépend d'un autre
    Par atlantideD dans le forum IHM
    Réponses: 1
    Dernier message: 23/04/2007, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo