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

Modules Perl Discussion :

Probleme: use Module


Sujet :

Modules Perl

  1. #1
    Membre confirmé Avatar de crochepatte
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2005
    Messages : 206
    Par défaut Probleme: use Module
    Bonjour,

    Voila j'ai une erreur assez bizarre ...

    Je suis actuellement en train de develloper un application web à l'aide de cgi Perl.
    Je possede une page html qui envoie vers un cgi A.
    Ce cgi se charge de lancer un script perl B et renvoie sur un cgi C qui permet d'afficher les resultats de B.

    J'apel mon script B à l'aide de la fonction open avec le pipe...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	open (CMD, "perl B.pl $param |") or return 0;
    Mon script perl B fais apel à d'autre module perl que j'ai implémenté.
    Helas, lorsque je charge un module le script ne se lance pas correctement...
    Pourtant, si je tape la meme commande via une console, le script s'execute bien...Cela montre bien que le script est correct... Pourtant lorque de l'inculsion de ce module, en passant pas la commande open...le script ne semble pas s'executer!!!

    Je ne sais pas pourquoi le chargement de ce module ne marche pas, surtout que j'en charge d'autres également implémenté par mes soins...

    Resultats, pour palier a ce probleme, j'ai inserer tout le code du module dans mon script perl B... ce qui est loin d'etre beau ni tre modulaire!!!

    Si quelqu'un me comprend... et qu'il voit ou peut etre l'erreur...

    Merci beaucoup

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Par défaut
    salut,

    bon je suis pas sur d'avoir tout compris mais sit tu veux executer un perl depuis un autre script perl, OPEN ne doit pas etre la bonne commande car je pense que elle doit charger le fichier dans le descripteur CMD et non l'executer par le sytème comme toi tu le voudrais. Je pense que tu devrais utuliser "system" car c'est ce que tu veux, que le système execute ton code.
    J'esaierai un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    # ta commande
    $cmd="perl B.pl $param";
    # execution du code par le système
    $retour = 0xffff & system($cmd);
    Je me trompe peut être car c'est peut être different pour une appli WEB.

  3. #3
    Membre confirmé Avatar de crochepatte
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2005
    Messages : 206
    Par défaut
    Je ne pense pas que ce doit etre cela le probleme, avec open cela marche tout aussi bien...c'est juste une alternative à la commande system... De plus je suis obligé d'utiliser open pour pouvoir executer mon script independemment de mon cgi qui le lance...

    Mais c sympa d'avoir repondu surtout que mon post n'est pas tres clair!!!

  4. #4
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Effectivement, open est tout à fait approprié oiur l'exécution de commande, l permet de faire un pipe si l'on rajoute un | au début (pipe en écriture) ou à la fin (pipe en lecture)...

    Ppour tpn problème crochepatte, essai de remplacer use par require, cela peut venir de là...

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Par défaut
    desolé je savais pas du tout que OPEN pouvait permettre d'executer un script. J'aurai appris qqchose

  6. #6
    Membre confirmé Avatar de crochepatte
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2005
    Messages : 206
    Par défaut
    Merci pour vos reponses.

  7. #7
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Si tu utilises des modules que tu as créé, vérifie qu'ils sont dans @INC dans un chemin absolu (typiquement pas dans .) car le répertoire courant lorsque tu lances ton script par le open() n'est probablement pas le bon.

    --
    Jedaï

  8. #8
    Membre confirmé Avatar de crochepatte
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2005
    Messages : 206
    Par défaut
    oui je savais que cela pouvait poser probleme, donc j'ai mis les modules utilisé dans meme dossier que le script que je lance...parce que je ne sais pas comment configurer @INC...

  9. #9
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par crochepatte
    oui je savais que cela pouvait poser probleme, donc j'ai mis les modules utilisé dans meme dossier que le script que je lance...parce que je ne sais pas comment configurer @INC...
    C'est bien ce que je pensais... Les modules sont dans le dossier où se trouve ton script, or ce dossier n'est pas dans @INC (qui est la liste des dossiers où Perl cherche un module qu'on lui demande de charger). Si ton script marche habituellement lorsque tu le lances en ligne de commande, c'est parce que tu le lance à partir du dossier où il se trouve, et que "." (le dossier courant) est lui dans @INC. Lorsque tu le lances depuis un autre dossier (comme par exemple dans ton cas si l'autre script n'est pas dans le même dossier), "." n'est pas le bon dossier, donc Perl ne trouve pas tes modules.
    Il faut mettre tes modules dans un autre emplacement, soit un chemin absolu (sans doute à éviter), soit dans un chemin relatif à une variable d'environnement qui t'es accessible. Et rajouter ce dossier dans @INC par l'intermédiaire du pragma lib (perldoc lib).

    --
    Jedaï

  10. #10
    Membre confirmé Avatar de crochepatte
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2005
    Messages : 206
    Par défaut
    Merci pour toutes ces informations...je comprends mieu mon probleme...il est vrai que le cgi qui lance le programme est dans un dossier ou le module n'est pas...
    Merci encore

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

Discussions similaires

  1. [Tkinter] probleme sur module oscillo (cours swinnen)
    Par xavier-Pierre dans le forum Tkinter
    Réponses: 4
    Dernier message: 07/03/2006, 23h12
  2. Probleme compilation module avec borland
    Par frtest dans le forum Langage
    Réponses: 1
    Dernier message: 27/01/2006, 12h03
  3. Probleme avec Module Base de données (dbd32.exe)
    Par mekdar dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/10/2005, 13h45
  4. probleme apache+module python sous windows
    Par gaussprodada dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 02/11/2004, 21h09
  5. Problème de modules (noyau 2.6.6)
    Par Francois Trazzi dans le forum Administration système
    Réponses: 14
    Dernier message: 04/06/2004, 00h13

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