[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