Mon script original est la suivante:Pourquoi un tuyau ne fonctionne-t-il pas sous le mode d'altération de Perl?
my $cmd = "dir";
open (H, "$cmd |");
my @result = <H>;
close (H);
print STDERR @result,"\n";
Ce script fonctionne très bien. Si j'ajoute la ligne suivante au script, il ne fonctionne pas:
$ENV{"LD_LIBRARY_PATH"} = "/opt/VRTSsfmh/lib";
$ENV{PATH}="/usr/bin:/bin:/sbin:/usr/sbin";
delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
Que Perl utilise-t-il lorsque le canal ouvert est appelé?
Ajout du code ci-dessous résolu le problème:
if ($^O =~ /Win32/i)
{
$ENV{'SystemRoot'} =~ /([A-Z]:(\\[A-Za-z0-9_]+)+)/;
my $system32_dir = $1."\\system32";
$ENV{'PATH'} = $system32_dir;
}
Lorsque vous dites que quelque chose «ne fonctionne pas», il est généralement utile de décrire comment cela échoue plus en détail. Par exemple, produit-il un message d'erreur, et si oui, quel est ce message? – pjf