FORUM Tom's Hardware » Programmation » Autre » [Perl] Récupérer valeur d'un programme Perl dans un batch
 

[Perl] Récupérer valeur d'un programme Perl dans un batch

Il y a 324 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : [Perl] Récupérer valeur d'un programme Perl dans un batch
 
Plus d'informations

Bonjour,

J'ai un script "appel.bat" qui appelle un programme Perl "pgm.pl".

J'aimerais pouvoir récupérer, dans "appel.bat", des valeurs générées par "pgm.pl".

Dans l'autre sens, çà ne pose pas de problème. C'est-à-dire :
Dans "appel.bat" j'appelle le programme Perl en passant une variable VAR1 :
C:\Perl\bin\perl.exe "C:\pgm.pl" %VAR1%
et dans le "pgm.pl", on peut récupérer la valeur de VAR1 en utilisant la variable $ARGV[0]

Mais ceci ne marche pas pour passer une valeur de "pgm.pl" au batch "appel.bat". Voici ce que j'ai essayé :

Dans "appel.bat" :

Code :
  1. C:\Perl\bin\perl.exe "C:\pgm.pl" %VAR1%
  2.     echo %VAR1%



Dans "pgm.pl" :

Code :
  1. $ARGV[0]="coucou";




Mais dans "appel.bat", la variable %VAR1% reste vide.


Une solution serait de passer par un fichier mais çà me convient pas car je fais des print dans le "pgm.pl"


Quelqu'un a une idée svp ??

Profil : Pointeur
Plus d'informations

non ca passe pas comme ca

le meilleurs moyen pour ton probleme c'est de passer par des variables d'environnements

Plus d'informations

oki
comment écrit-on, en perl, dans des variables d'environnements ?

Edit : oki, c'est possible avec $ENV() :) j'essairai çà l'an prochain (càd dans 3 jours)

merci !


Message édité par sephiburp le 30-12-2006 à 19:32:51
Plus d'informations

Bonne année !!


J'ai un nouveau problème.

En Perl, j'arrive à écrire dans des variables d'environnement avec $ENV{''} mais je n'arrive pas à lire les valeurs en batch.

Toujours avec le même exemple :


Dans "appel.bat" :

Code :
  1. SET MAVAR=AAA
  2. C:\Perl\bin\perl.exe "C:\pgm.pl"
  3. ECHO %MAVAR%



Dans "pgm.pl" :

Code :
  1. print $ENV{'MAVAR'};  # Affiche "AAA"
  2. $ENV{'MAVAR'} = "BBB";
  3. print $ENV{'MAVAR'};  # Affiche "BBB"



La variable MAVAR est bien lue et bien modifiée dans "pgm.pl"
Mais dans le batch "appel.bat", le ECHO en ligne 3 affiche toujours "AAA" pourtant la valeur a bien été modifiée dans le pgm.pl



zeb
Profil : Modérateur libre
Plus d'informations

M'enfin, une variable d'environnement ne peut pas être modifiée par un sous-programme (en perl, en C, en ce-que-tu-veux), c'est le principe des variables d'environnement.

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Y faut renvoyer une valeur de sortie à la fin de ton prog et la recuperer avec un errorlevel dans ton batch :o


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
zeb
Profil : Modérateur libre
Plus d'informations

Un hack (peut-on vraiment parler de hack sous DOS :lol:) est de faire écrire au sous programme un fichier BAT temporaire contenant

SET VAR=valeur

Il suffit alors d'exécuter ce batch avec un CALL puis de le supprimer :

Code :
  1. ECHO OFF
  2. SETLOCAL
  3. SET AN=2006
  4. ECHO SET AN=2007 > %TEMP%\ANNEE.BAT
  5. ECHO Joyeux Noël %AN%
  6. CALL %TEMP%\ANNEE.BAT
  7. ECHO Et bonne année %AN%
  8. DEL %TEMP%\ANNEE.BAT


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » Autre » [Perl] Récupérer valeur d'un programme Perl dans un batch
 

Annonces Google
Publicité