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

[Résolu/Fermé]
Signaler
Messages postés
63
Date d'inscription
lundi 2 juillet 2007
Statut
Membre
Dernière intervention
25 mars 2011
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
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.

4 réponses

Messages postés
63
Date d'inscription
lundi 2 juillet 2007
Statut
Membre
Dernière intervention
25 mars 2011
7
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>;
Messages postés
63
Date d'inscription
lundi 2 juillet 2007
Statut
Membre
Dernière intervention
25 mars 2011
7
Personne n'a une idée s'il vous plait ?
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 545
Salut,

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

Messages postés
63
Date d'inscription
lundi 2 juillet 2007
Statut
Membre
Dernière intervention
25 mars 2011
7
T'es vraiment un génie lami2Oj ...

Merci beaucoup !
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 545
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 ;-)