Eric C.
2011-04-21 10:04:41 UTC
Bonjour à tous,
Je cherche à lancer des processus via "open+pipe", sur un poste
Windows.
Le seul point délicat à gérer concerne la présence d'espaces dans le
chemin d'accès à mon exécutable, et la consultation du fil http://bit.ly/fKvxLM
m'a permis de trouver des solutions pour gérer les arguments multiples
(la solution proposée par Paul Gaborit - syntaxe étendue d'open, avec
passage d'arguments en liste - n'est apparemment pas implémentée dans
mon perl 5.10)
Ci-dessous mes quelques tests, qui fonctionnent tous comme prévu sauf
le dernier :quelqu'un peut-il m'expliquer pourquoi l'appel n°5 redonne
le msg "'C:\Program' n'est pas reconnu en tant que commande interne
bla bla ..." que les solutions 3 et 4 permettent de contourner ?
use strict;
use File::Spec::Functions;
use Cwd;
my $cmd= 'C:\Program Files\Internet Explorer\iexplore.exe';
my $file = catfile(cwd(),'z.html');
# open SORTIE,$cmd." |"; # 1 : OK
# open SORTIE,$cmd." ".$file." |"; # 2 : NOK
# open SORTIE,"\"$cmd\" ".$file." |"; # 3 : OK
# open SORTIE,"\"$cmd\" $file |"; # 4 :OK
my $ligne = $cmd." ".$file;
open SORTIE,"\"$ligne\" |"; # 5 : NOK ?
while (<SORTIE>) {
#...
}
close SORTIE;
Merci,
Eric
Je cherche à lancer des processus via "open+pipe", sur un poste
Windows.
Le seul point délicat à gérer concerne la présence d'espaces dans le
chemin d'accès à mon exécutable, et la consultation du fil http://bit.ly/fKvxLM
m'a permis de trouver des solutions pour gérer les arguments multiples
(la solution proposée par Paul Gaborit - syntaxe étendue d'open, avec
passage d'arguments en liste - n'est apparemment pas implémentée dans
mon perl 5.10)
Ci-dessous mes quelques tests, qui fonctionnent tous comme prévu sauf
le dernier :quelqu'un peut-il m'expliquer pourquoi l'appel n°5 redonne
le msg "'C:\Program' n'est pas reconnu en tant que commande interne
bla bla ..." que les solutions 3 et 4 permettent de contourner ?
use strict;
use File::Spec::Functions;
use Cwd;
my $cmd= 'C:\Program Files\Internet Explorer\iexplore.exe';
my $file = catfile(cwd(),'z.html');
# open SORTIE,$cmd." |"; # 1 : OK
# open SORTIE,$cmd." ".$file." |"; # 2 : NOK
# open SORTIE,"\"$cmd\" ".$file." |"; # 3 : OK
# open SORTIE,"\"$cmd\" $file |"; # 4 :OK
my $ligne = $cmd." ".$file;
open SORTIE,"\"$ligne\" |"; # 5 : NOK ?
while (<SORTIE>) {
#...
}
close SORTIE;
Merci,
Eric