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 :
C:\Perl\bin\perl.exe "C:\pgm.pl" %VAR1%
echo %VAR1%
Dans "pgm.pl" :
Code :
$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"
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 :
SET MAVAR=AAA
C:\Perl\bin\perl.exe "C:\pgm.pl"
ECHO %MAVAR%
Dans "pgm.pl" :
Code :
print $ENV{'MAVAR'}; # Affiche "AAA"
$ENV{'MAVAR'} = "BBB";
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
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.