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 :

[Perl 5.24][Passage d'arugment] - ça fonctionne plus


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 18
    Points : 11
    Points
    11
    Par défaut [Perl 5.24][Passage d'arugment] - ça fonctionne plus
    Bonjour,

    j'ai un script qui contient un passage d'argument et qui fonctionnait sur mon pc précédent.

    après recopie des données et nouveau link du bin du Perl.exe, ce script ne récupère plus les valeurs des arguments passés !

    avant toute chose, j'ai testé d'autres scripts qui fonctionnent parfaitement (mais qui n'ont pas de passage d'argument).

    En fait, même un bête script de 3 lignes ne récupère plus les arguments passés.

    Auriez-vous une piste, svp, car là je sèche ?

    Voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #!C:\Users\A454222\Documents\_Apps\Perl64\bin\ -s
     
    use strict;
    use warnings;
     
    our($TestArg) ;
     
    print ("TestArg = { $TestArg }") ;
    et le retour :

    C:\Users\A454222\Documents\__Dev Perl\__TestScript>TestScirpt.pl -TestArg=3
    Use of uninitialized value $TestArg in concatenation (.) or string at C:\Users\A454222\Documents\__Dev Perl\__TestScript\TestScirpt.pl line 11.
    TestArg = { }

  2. #2
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 311
    Points : 354
    Points
    354
    Par défaut
    Salutations...

    Je n'ai pas l'impression dans ce que tu montres que tu récupères les paramètres...

    Pour récupérer le nombre de paramètres...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for($cpt=0;$cpt<$parametres;$cpt++)
    {
      print "Param: ".$ARGV[$cpt]."\n";
    }
    ...pour les afficher.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Bonjour Hurukan,

    merci de ta réponse.

    normalement, la ligne doit récupérer l'argument passé en -TestArg, non ?

    lorsque l'on utilise avec le "-s", il faut prohiber l'utilisation de "my" et préférer "our" ... d'après ce que j'avais lu à l'époque.

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 832
    Points : 6 466
    Points
    6 466
    Par défaut
    Normalement ça devrait marcher, est ce que tu es sûr de tester/éditer le bon script:
    ... __TestScript\TestScirpt.pl ...
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 832
    Points : 6 466
    Points
    6 466
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #!C:\Users\A454222\Documents\_Apps\Perl64\bin\ -s
    Ou alors c'est le fait qu'il n'y ait pas le nom de l'exécutable (perl.exe) dans le path de ton shebang qui fait que ton option -s tombe dans le néant (j'imagine que sous Windows, l'extension .pl doit suffir à associer ton script à l'exécutable perl, ce qui fait qu'il s'exécute malgré tout.).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Oui, j'avais vu l'inversion des lettres mais ce n'est pas ça le problème.

    Et concernant la ligne shebang, je n'ai jamais mis le Perl.exe et mon script fonctionnait sur mon autre PC.

    Par acquis de conscience, j'ai modifié en mettant bien TestScript et en ajoutant Perl.exe mais cela ne change rien au résultat.

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 832
    Points : 6 466
    Points
    6 466
    Par défaut
    Et à tout hasard, est-ce que tu as essayé d'afficher le contenu de @ARGV au début du script pour voir s'il contient quelque chose: print(join("\r\n", @ARGV));
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    je viens de le rajouter et quel que soit le nombre d'argument que je mets au script, il me retourne vide ou 0 !

  9. #9
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bonjour,
    C'est déjà vieux, donc juste pour confirmer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!C:\Strawberry\perl\bin\ -s
    use strict;
    use warnings;
     
    =pod
    my $parametres=@ARGV;
    print(join("\r\n", @ARGV));
    =cut
     
    our($TestArg) ;
    print ("TestArg = { $TestArg }") ;
    Ça fonctionne avec le bon shebang :
    F:\>
    F:\>
    F:\>perl ESS.PL -TestArg=TOTO
    TestArg = { TOTO }
    F:\>
    Sans shebang, j'ai la même erreur que toi :
    F:\>
    F:\>perl ESS.PL -TestArg=TOTO
    Use of uninitialized value $TestArg in concatenation (.) or string at ESS.PL line 10.
    TestArg = { }
    F:\>
    Un espace de trop retourne une chaîne vide :
    F:\>
    F:\>perl ESS.PL -TestArg= TOTO
    TestArg = { }
    F:\>
    L'absence du signe = OU l'absence de paramètre retourne 1 :
    F:\>
    F:\>perl ESS.PL -TestArg TOTO
    TestArg = { 1 }
    F:\>

    F:\>
    F:\>perl ESS.PL -TestArg
    TestArg = { 1 }
    F:\>
    Comme CosmoKnacki, je pense que ton shebang n'est pas valide, ou que tu passes mal l'argument...

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/06/2010, 20h33
  2. Réponses: 1
    Dernier message: 30/09/2009, 13h42
  3. Réponses: 8
    Dernier message: 11/10/2006, 17h41
  4. Réponses: 5
    Dernier message: 23/08/2006, 22h51
  5. CSS ne fonctionne plus depuis le passage au XHTML
    Par Cr@zyDeep dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 27/09/2005, 15h42

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