[Perl] [batch] Récupérer valeur de Perl dans batch

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” :

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

Dans "pgm.pl" :

      $ARGV[0]="coucou";

Mais de retour 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" :confused:

Quelqu’un a une idée svp ??

Heu?

Ca risque pas trop de marcher.

Tu appelle un programme qui va influer sur son propre environnement. Donc tu peux rien faire de plus.

éventuellement, tu peux tenter les redirections (|) mais même avec ça, je vois pas ce qui pourrait te permettre de faire plus.

Une autre solution, plus linuxienne, serait ça :

set var=`machin.pl …`

Passe par un fichier? :slight_smile:

Merci pour ta réponse.

Peux-tu m’en dire plus sur ce set var=`machin.pl …` ?

Nope pas trop.

Juste que sous certains bash, `aaa` évalue ce qu’il y a entre les back tick, et stocke la sortie du processus. Donc si tu peux générer la sortie appropriée, tu peux faire tes set.

Ceci étant, ça ne marche pas sous Win.