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 :

pb pour passer des arguments à un prg en utilisant "sys


Sujet :

Langage Perl

  1. #1
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut pb pour passer des arguments à un prg en utilisant "sys
    Salut à tous

    Voici mon problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system("perl momo.pl ./TOTO/$momo/$momo.ktr ./TOTO/$momo/$momo.tfg 50 0.5");
    Je programme un pipeline en perl, mon prg perl appel un autre prg perl etc...

    Problème : Dans momo.pl : ARGV[0]---> ./TOTO/TK21/
    ARGV[1]--> ./TOTO/TK21/

    Pourquoi le suite du chemin n'est pas passeé au programme suivant (momo.pl) ??

    C'est bizard car mon programme fonctionne sur windows en invite de commande et sur le serveur linux 1 mais pas dans cygwin ni dans le serveur linux 2 !!!!
    Or moi je dois faire fonctionner ce prg sur le serveur linux 2 car il est plus puissant ....

    Quelqu'un aurait une idée :

    Merci
    -------------------
    Ickou

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Bizarre en effet

    Et ton programme momo.pl, as-tu la possibilité de le transformer en package ?

  3. #3
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    Salut !

    J'ai mieux localisé le problème !!!!
    Voici mon constat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/usr/bin/perl
    open (H, "liste_beta_A.txt");
    $ak=0; @liste=();
    while &#40;<H>&#41; &#123;chomp; $liste&#91;$ak&#93;=$_; $ak++;&#125;
    close H;
     
    $momo='CR18';
    system &#40;"perl momo.pl ./MOMO/$momo/$momo.ktr ./MOMO/$momo/$momo.tfg"&#41;;
     
    foreach $momo &#40;@liste&#41;&#123;
      system &#40;"perl momo.pl ./MOMO/$momo/$momo.ktr ./MOMO/$momo/$momo.tfg"&#41;;
    &#125;
    momo.pl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "1->$ARGV&#91;0&#93;\n2->$ARGV&#91;1&#93;\n";
    liste_beta_A.txt contient :
    • tk21
      VMR58


    voila le résultat sur le serveur :
    • 1->./MOMO/CR18/CR18.ktr
      2->./MOMO/CR18/CR18.tfg
      1->./MOMO/tk21
      2->/tk21
      1->./MOMO/VMR58
      2->/VMR58


    Par contre si j'exécute le programme sur l'invite de commande windows, j'ai le bon résultat :
    • 1->./MOMO/CR18/CR18.ktr
      2->./MOMO/CR18/CR18.tfg
      1->./MOMO/tk21/tk21.ktr
      2->./MOMO/tk21/tk21.tfg
      1->./MOMO/VMR58/VMR58.ktr
      2->./MOMO/VMR58/VMR58.tfg


    Quelqu'un comprend pourquoi sur mon serveur (et sur cygwin aussi !), les arguments sont mal passés lorsque c'est dans une boucle foreach.... et ça le fait pas sur un autre serveur ni sur invite de commande ....

    Essayer ces programmes chez vous pour voir les résultats

    moi ça me rend fou

    pour répondre à Arioch :
    package = .pm ??
    comment tu fais ??
    -------------------
    Ickou

  4. #4
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    -------------------
    Ickou

  5. #5
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu as essayé la concaténation plutôt que l'interpolation ?

    --
    Jedaï

  6. #6
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    Salut Jedaï !

    J'ai essayé de transmettre le chemin en argument de plusieurs façons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach $momo &#40;@liste&#41;&#123;
       $chemin="./MOMO/$momo/$momo.ktr";
       system &#40;"perl momo.pl $chemin"&#41;; 
    &#125;
    Apparemment, lorsque qu'on utilise "system" dans un boucle "foreach", si les arguments du programme appellé sont des chemins, ceci sont mal transmit au programme suivant l'ordinateur ..... voilà ma conclusion !!!
    ça dépend pas de la version de perl ni de l'OS !!!!!

    Quelqu'un a essayé sur son ordi mon code ??
    -------------------
    Ickou

  7. #7
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    A force de chercher on trouve !!!!!

    Mon problème se produit uniquement lorsque c'est la version 64bit de perl sous linux!!!

    Notre ancien serveur linux est un 32bit ça marche !
    le nouveau est un 64bit, ça marche pas !

    sur mon ordi :
    - activeperl (invite de commande) (version 32bit) ça marche
    - cygwin (version de perl en 64bit) ça marche pas
    et c'est la version 5.8.7 sur les 2 !!

    Je viens d'essayer sur un sunfire6800 version 64bit (perl en 64bit), ça marche mais c'est pas linux, c'est SunOS 5.9 .......

    SVP, quelqu'un pourrait -t- il me confirmer ça ??
    j'ai pas envie de toucher à la version de perl du nouveau serveur pour rien
    -------------------
    Ickou

Discussions similaires

  1. Pb pour passer des arguments dans l'edi
    Par altair8080 dans le forum Code::Blocks
    Réponses: 4
    Dernier message: 17/07/2013, 09h21
  2. Passer des arguments pour appli windows (execution console)
    Par death_style dans le forum Visual C++
    Réponses: 1
    Dernier message: 15/02/2010, 13h19
  3. Modification de fonction pour passer des arguments via l'url
    Par dl_jarod dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/06/2008, 12h05
  4. Comment passer des argument a un script php ?
    Par Florina dans le forum Linux
    Réponses: 2
    Dernier message: 11/12/2005, 14h38
  5. Réponses: 2
    Dernier message: 04/10/2005, 20h54

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