[Toulouse-pm] Lire des =?iso8959-9?Q?d?=
=?iso8959-9?Q?onn=E9es?= produites par un script Perl
mat at reynerie.yi.org
mat at reynerie.yi.org
Tue Jul 22 14:00:31 CDT 2003
On Tue, Jul 22, 2003 at 03:02:43PM +0200, maurat gerard wrote:
> Bonjour,
Bonsoir,
> Sur plate-formes Windows NT; depuis un script Perl, est-il possible de
> lire des données produites par un autre script Perl?
oui.
> Pour être plus clair, ci-dessous un exemple d'un premier script voulant
> récupérer le STDOUT du second script
>
> Code du premier script
> ------------------------
> $ret=`script2.pl dir c:\.`;
> print "$ret\n";
>
> Code du second script
> -----------------------
> $cde=join(' ', at ARGV);
> $ret1=`$cde`;
> print $ret1;
>
>
> A l'issue de l'exécution du premier script, $ret est vide et il ne
> s'affiche rien à l'écran.
j'arrive, apres quelques modifications, a faire fonctionner
vos deux scripts :
# Premier script :
#!C:\Perl\bin\perl -w
use strict;
my $ret=`c:\\Perl\\bin\\perl test2.pl dir c:\.`;
print "$ret\n";
# Deuxieme script :
#!C:\Perl\bin\perl -w
use strict;
my $cde=join(' ', at ARGV);
my $ret1=`$cde`;
print $ret1
l'execution du script test1.pl produit bien
un listing du repertoire C:.
> En fait, un autre interpréteur PERL démarre pour exécuter le second
> Script. Du coup, je récupère le retour de l'interpréteur et non celui du
> second script.
Etes vous sur qu'un interpreteur Perl est execute ?
Chez moi, avant d'ajouter la path complet du binaire
Perl dans le premier script, Windows ne savait que
faire du script test2.pl.
> J'ai essayé avec différentes méthodes (system, exec, les pipes) mais
> aucune amélioration.
Il existe IPC::Open2 (et IPC::Open3), qui si je me souviens bien,
sont portes sur les systemes Windows, et qui sont fait
pile poil pour resoudre ce genre de problemes.
ps: c'etait mes premiers tests de Perl sur un Windows :)
--
mat
More information about the Toulouse-pm
mailing list