Dites dans la page utilisateur StackOverflow de quelqu'un que vous souhaitez remplacer toutes les instances de PERL par Perl. Vous pouvez le faire avec
#! /usr/bin/perl
use warnings;
use strict;
use HTML::Parser;
use LWP::Simple;
my $html = get "http://stackoverflow.com/users/201469/phil-jackson";
die "$0: get failed" unless defined $html;
sub replace_text {
my($skipped,$markup) = @_;
$skipped =~ s/\bPERL\b/Perl/g;
print $skipped, $markup;
}
my $p = HTML::Parser->new(
api_version => 3,
marked_sections => 1,
case_sensitive => 1,
unbroken_text => 1,
xml_mode => 1,
start_h => [ \&replace_text => "skipped_text, text" ],
end_h => [ \&replace_text => "skipped_text, text" ],
);
# your page may use a different encoding
binmode STDOUT, ":utf8" or die "$0: binmode: $!";
$p->parse($html);
La sortie est ce que nous attendons:
$ wget -O phil-jackson.html http://stackoverflow.com/users/201469
$ ./replace-text >out.html
$ diff -ub phil-jackson.html out.html
--- phil-jackson.html
+++ out.html
@@ -327,7 +327,7 @@
PERL:
-#$linkTrue = … ">comparing PERL md5() and PHP md5()</a></h3>
+#$linkTrue = … ">comparing Perl md5() and PHP md5()</a></h3>
<div class="tags t-php t-perl t-md5">
<a href="https://stackoverflow.com/questions/tagged/php" class="post-tag" title="show questions tagged 'php'" rel="tag">php</a> <a href="https://stackoverflow.com/questions/tagged/perl" class="post-tag" title="show questions tagged 'perl'" rel="tag">perl</a> <a href="https://stackoverflow.com/questions/tagged/md5" class="post-tag" title="show questions tagged 'md5'" rel="tag">md5</a>
Le « PERL: » pouce endolori fait partie d'un attribut d'élément, et non une section de texte.