my @prog = ('lynx','-dump -force_html test.html > test.txt');
system(@prog) == 0 or die "system @prog failed $? \n";
open(TMP, "test.txt") or die "Impossible d'ouvrir le fichier test.txt\n";
my @str = <TMP>;
print @str;
-----------------------------
Le problème est que j'obtiens simplement l'exécution de lynx sans aucun
argument et pas comme je pensais le résultat de la commande :
lynx -dump -force_html test.html > test.txt
my @prog = ('lynx','-dump -force_html test.html > test.txt'); system(@prog) == 0 or die "system @prog failed $? n"; open(TMP, "test.txt") or die "Impossible d'ouvrir le fichier test.txtn"; my @str = <TMP>; print @str;
-----------------------------
Le problème est que j'obtiens simplement l'exécution de lynx sans aucun argument et pas comme je pensais le résultat de la commande : lynx -dump -force_html test.html > test.txt
J'ai fait une erreur, c'est certain, mais où ?
Tel que vous l'avez écrit, 'lynx' doit être appelé avec un seul et unique argument qui contient '-dump -force_html test.html > test.txt'...
Vous pourriez éventuellement séparer chaque argument dans un tableau mais il resterait encore le problème de la redirection qui, telle que vous l'écrivez, nécessite absolument le passage par un 'shell' ce qui pose ensuite des problème d'interprétation des arguments par ce 'shell' avant l'appel réel de 'lynx'.
En fait, la bonne solution dans ce cas, consiste à utiliser 'open' :
open my $resfh, "-|", 'lynx', '-dump', '-force_html', 'test.html' or die "can't execute 'lynx': $!n"; my @str = <$resfh>; close $resfh;
Pour en savoir plus :
perldoc -f open
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
my @prog = ('lynx','-dump -force_html test.html > test.txt');
system(@prog) == 0 or die "system @prog failed $? n";
open(TMP, "test.txt") or die "Impossible d'ouvrir le fichier test.txtn";
my @str = <TMP>;
print @str;
-----------------------------
Le problème est que j'obtiens simplement l'exécution de lynx sans aucun
argument et pas comme je pensais le résultat de la commande :
lynx -dump -force_html test.html > test.txt
J'ai fait une erreur, c'est certain, mais où ?
Tel que vous l'avez écrit, 'lynx' doit être appelé avec un seul et
unique argument qui contient '-dump -force_html test.html > test.txt'...
Vous pourriez éventuellement séparer chaque argument dans un tableau
mais il resterait encore le problème de la redirection qui, telle que
vous l'écrivez, nécessite absolument le passage par un 'shell' ce qui
pose ensuite des problème d'interprétation des arguments par ce
'shell' avant l'appel réel de 'lynx'.
En fait, la bonne solution dans ce cas, consiste à utiliser 'open' :
open my $resfh, "-|", 'lynx', '-dump', '-force_html', 'test.html'
or die "can't execute 'lynx': $!n";
my @str = <$resfh>;
close $resfh;
Pour en savoir plus :
perldoc -f open
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
my @prog = ('lynx','-dump -force_html test.html > test.txt'); system(@prog) == 0 or die "system @prog failed $? n"; open(TMP, "test.txt") or die "Impossible d'ouvrir le fichier test.txtn"; my @str = <TMP>; print @str;
-----------------------------
Le problème est que j'obtiens simplement l'exécution de lynx sans aucun argument et pas comme je pensais le résultat de la commande : lynx -dump -force_html test.html > test.txt
J'ai fait une erreur, c'est certain, mais où ?
Tel que vous l'avez écrit, 'lynx' doit être appelé avec un seul et unique argument qui contient '-dump -force_html test.html > test.txt'...
Vous pourriez éventuellement séparer chaque argument dans un tableau mais il resterait encore le problème de la redirection qui, telle que vous l'écrivez, nécessite absolument le passage par un 'shell' ce qui pose ensuite des problème d'interprétation des arguments par ce 'shell' avant l'appel réel de 'lynx'.
En fait, la bonne solution dans ce cas, consiste à utiliser 'open' :
open my $resfh, "-|", 'lynx', '-dump', '-force_html', 'test.html' or die "can't execute 'lynx': $!n"; my @str = <$resfh>; close $resfh;
Pour en savoir plus :
perldoc -f open
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
GuiGui
Paul Gaborit a écrit :
Tel que vous l'avez écrit, 'lynx' doit être appelé avec un seul et unique argument qui contient '-dump -force_html test.html > test.txt'...
Vous pourriez éventuellement séparer chaque argument dans un tableau mais il resterait encore le problème de la redirection qui, telle que vous l'écrivez, nécessite absolument le passage par un 'shell' ce qui pose ensuite des problème d'interprétation des arguments par ce 'shell' avant l'appel réel de 'lynx'.
Ok.
En fait, la bonne solution dans ce cas, consiste à utiliser 'open' :
open my $resfh, "-|", 'lynx', '-dump', '-force_html', 'test.html' or die "can't execute 'lynx': $!n"; my @str = <$resfh>; close $resfh;
Pour en savoir plus :
perldoc -f open
J'y vois plus clair maintenant. Je débute, et je n'avais jamais utilisé open avec plus de 3 arguments ( open VAR, mode, nomfichier ).
Paul Gaborit a écrit :
Tel que vous l'avez écrit, 'lynx' doit être appelé avec un seul et
unique argument qui contient '-dump -force_html test.html > test.txt'...
Vous pourriez éventuellement séparer chaque argument dans un tableau
mais il resterait encore le problème de la redirection qui, telle que
vous l'écrivez, nécessite absolument le passage par un 'shell' ce qui
pose ensuite des problème d'interprétation des arguments par ce
'shell' avant l'appel réel de 'lynx'.
Ok.
En fait, la bonne solution dans ce cas, consiste à utiliser 'open' :
open my $resfh, "-|", 'lynx', '-dump', '-force_html', 'test.html'
or die "can't execute 'lynx': $!n";
my @str = <$resfh>;
close $resfh;
Pour en savoir plus :
perldoc -f open
J'y vois plus clair maintenant. Je débute, et je n'avais jamais utilisé
open avec plus de 3 arguments ( open VAR, mode, nomfichier ).
Tel que vous l'avez écrit, 'lynx' doit être appelé avec un seul et unique argument qui contient '-dump -force_html test.html > test.txt'...
Vous pourriez éventuellement séparer chaque argument dans un tableau mais il resterait encore le problème de la redirection qui, telle que vous l'écrivez, nécessite absolument le passage par un 'shell' ce qui pose ensuite des problème d'interprétation des arguments par ce 'shell' avant l'appel réel de 'lynx'.
Ok.
En fait, la bonne solution dans ce cas, consiste à utiliser 'open' :
open my $resfh, "-|", 'lynx', '-dump', '-force_html', 'test.html' or die "can't execute 'lynx': $!n"; my @str = <$resfh>; close $resfh;
Pour en savoir plus :
perldoc -f open
J'y vois plus clair maintenant. Je débute, et je n'avais jamais utilisé open avec plus de 3 arguments ( open VAR, mode, nomfichier ).