Rechercher : dans
Par :

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

Dernière réponse le 16 fév 2009 à 10:19:36 TMart, le 13 fév 2009 à 16:05:53 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [PERL] Problème avec la fonction system() » dans :
Disk boot failure - Insert system disk and press Enter VoirLe message d'erreur «DISK BOOT FAILURE INSERT SYSTEM DISK AND PRESS ENTER», «Disque non système» ou «No system disk» signifie que l'ordinateur n'a pas trouvé de système d'exploitation sur lequel démarrer (booter). Les causes de ce message d'erreur...
Faire fonctionner une application Windows sous Linux avec Wine VoirWine est un logiciel permettant de faire fonctionner certaines applications Windows sous Linux. Contrairement à VMWare ou VirtualBox, Wine n'émule pas un PC complet, mais seulement les API Win32 (appels système Windows). L'émulation n'est pas...
Gérer les fonctionnalités sous vista VoirSous Vista, comme il est possible sous Xp, vous pouvez activer ou désactiver certaines fonctionnalités suivant si vous utilisez les jeux, une imprimante, etc... Accéder aux fonctionnalités de Windows Fonctionnalités Accéder aux...
Perl - Les fonctions VoirLa notion de fonction et de procédure On appelle procédure un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la procédure dans le corps du programme principal. Les procédure permettent d'exécuter dans plusieurs...
Système d'exploitation VoirDescription du système d'exploitation Pour qu'un ordinateur soit capable de faire fonctionner un programme informatique (appelé parfois application ou logiciel), la machine doit être en mesure d'effectuer un certain nombre d'opérations...
Les modes de fonctionnement du Wifi (802.11 ou Wi-Fi) VoirIl existe différents types d'équipement pour la mise en place d'un réseau sans fil Wifi : Les adaptateurs sans fils ou cartes d'accès (en anglais wireless adapters ou network interface controller, noté NIC) : il s'agit d'une carte réseau à la...

1

TMart, le 13 fév 2009 à 16:12:14

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>;

Répondre à TMart

2

TMart, le 16 fév 2009 à 09:05:29

Personne n'a une idée s'il vous plait ?

Répondre à TMart

3

lami20j, le 16 fév 2009 à 09:37:46

Salut,

essaie

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

106485010510997108

Répondre à lami20j

4

TMart, le 16 fév 2009 à 09:42:36

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

Merci beaucoup !

Répondre à TMart

5

 lami20j, le 16 fév 2009 à 10:19:36

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 ;-)
106485010510997108

Répondre à lami20j