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

Résolu/Fermé
TMart Messages postés 63 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 25 mars 2011 - 13 févr. 2009 à 16:05
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 16 févr. 2009 à 10:19
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

TMart Messages postés 63 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 25 mars 2011 7
13 févr. 2009 à 16:12
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
TMart Messages postés 63 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 25 mars 2011 7
16 févr. 2009 à 09:05
Personne n'a une idée s'il vous plait ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
16 févr. 2009 à 09:37
Salut,

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

0
TMart Messages postés 63 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 25 mars 2011 7
16 févr. 2009 à 09:42
T'es vraiment un génie lami2Oj ...

Merci beaucoup !
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
16 févr. 2009 à 10:19
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