Le Wednesday 15 July 2009 00:44:38 Yves Rutschle, vous avez écrit : > J'ai une question sur ce caractère: > > On Tue, Jul 14, 2009 at 09:58:28PM +0200, Yannick Fouquet wrote: > > % cat blabla.html | \ > > perl -W -e 'while (<>){print "$2\n" if (/<a(.*?)>(.*)<\/a/oi);};' > > ^ > > Il fait quoi ce 'o'? Je ne le trouve pas dans perlre(1). > > Merci d'avance, > Y.
Le manuel Perl est impressionnant quant à la qualité des documents en français. Ce n'est pas un programme sinon un langage ( langage pratique d'extraction et de rapport - Practical Extraction and Report Language ) ce qui demande de regarder les documents et exemples. Pour comprendre le code ci-dessus, il faut regarder les documents: - perlre Expressions régulières - perlvar Variables prédéfinies en Perl - perlfaq Foire Aux Questions - perlrun Invocation de Perl et ses arguments - perldata Types de données de Perl Il y a aussi le programme 'perldoc' pour une documentation sur une fonction. Par exemple pour comprendre comment ouvrir un fichier uniquement en lecture: % perldoc -f open Saches que le code dans un script serait différent car il manque des éléments: #!/usr/bin/perl -w use strict; unless ( defined(@ARGV) ) { print "Usage: $0 doc1.html doc2.html ...\n"; exit(1); } while ( my $f = shift(@ARGV) ) { open(FH,"<" . $f) or die("open($f): $!\n"); print $f . ":\n"; while ( <FH> ) { chomp(); if ( /<a(.*?)>(.*)<\/a/oi ) { print $1 . "\n"; } } close(FH); } exit(0); Enfin, pour améliorer le code d'une ligne, en utilisant l'option '-n' (boucle implicite autour de l'intégralité du code - plus besoin de while(<>){...}): % perl -ne 'print "$1\n" if /<a(.*?)>(.*)<\/a/oi' html.html Avec l'option '-i' ( édition sur place ) voila un 'sed' dopé à l'EPO en gardant une sauvegarde tout en modifiant le fichier 'monfichier' : <http://articles.mongueurs.net/magazines/linuxmag50.html> % perl -i.backup -pe 's/\bfoo\b/toto/g;s/\bbar\b/titi/g' monfichier % ls monfichier monfichier.backup Je ne suis absolument pas un expert, mais Perl est riche, puissant et souple pour ce que tu veux faire. Personnellement, j'ai appris en lissant et relisant la documentation Perl, alors j'insiste pour que tu t'y plonge aussi... Sites: Introduction au langage Perl ( c'est quoi 'for', c'est quoi 'while', ...: <http://www.med.univ-rennes1.fr/~poulique/cours/perl/perl_html/introperl42.html> Les Mongueurs de Perl: <http://paris.mongueurs.net/> <http://articles.mongueurs.net/magazines/> Salut; -- (o_ (/)_ S e r g e -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:" Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org