[PERL] Problème avec la fonction system()

Résolu
Bonjour,

Voila j'ai un petit souci avec mon script qui appelle qui fonction system qui exécute un bat avec 3 arguments. En effet les 2 premiers arguments sont bien pris en compte mais pas le dernier !
Le souci ne vient pas de mon bat puisque lorsque je le lance à la main dans le cmd avec les 3 arguments derrière ça marche.

Voici mon bout de code :

system('C:\Awstats\log.bat','TEST', $nom_log_replique , $nom_log_manquant );
print $nom_log_manquant;
print $nom_log_replique;


Les prints affichent bien les valeurs que je souhaite.

J'ai aussi essayé ça :

system("C:\\Awstats\\log.bat,TEST, $nom_log_manquant , $nom_log_replique");
print $nom_log_manquant;
print $nom_log_replique;


Même résultat, c'est toujours le dernier argument qui n'est pas pris en compte dans le .bat.

Je vois vraiment pas où est le souci ... à l'aide !! :)

Merci d'avance,
TMart.
Configuration: Windows XP
Firefox 3.0.6

4 réponses

  1. Je viens juste de tester quelque chose :

    system('C:\Awstats\log.bat','TEST', 'TOTO' , 'TATA' );

    Et là les 3 arguments sont bien pris en compte.

    Voici comment je déclare $nom_log_manquant er $nom_log_replique, mais je pense pas que ce soit ça non plus car quand je l'ai affiche j'ai les bonnes valeurs.


    print "\n\n # NOM LOG MANQUANT #:\n\n";
    print "Entrez le nom du log manquant :\n\n";
    my $nom_log_manquant =<STDIN>;

    #Saisie du log qui sera répliqué
    print "\n # NOM LOG REPLIQUE #:\n\n";
    print "Entrez le nom du log qui sera replique :\n\n";
    my $nom_log_replique =<STDIN>;
    0
    1. Personne n'a une idée s'il vous plait ?
      0
      1. Modérateur
        Salut,

        essaie
        chomp(my $nom_log_manquant =<STDIN>); 
        chomp(my $nom_log_replique =<STDIN>);

        0
        1. T'es vraiment un génie lami2Oj ...

          Merci beaucoup !
          0
          1. Modérateur
            Re,

            De rien ;-))

            T'es vraiment un génie
            Loin de ça.

            Il faut juste prendre l'habitude de "voir" les caractères non imprimables ;-)

            En fait quand tu faisait les <STDIN> sans le chomp tes variables contenaient un "\n" à la fin, ce qui faisait que la fonctionne system avait ça comme argument
            system('C:\Awstats\log.bat','TEST', "TOTO\n" , "TATA\n" ); 
            au lieu de
            system('C:\Awstats\log.bat','TEST', 'TOTO' , 'TATA' ); 

            Voilà, j'espère que tu as compris ;-)
            0