HTML.
1 #!/usr/bin/perl -w
2 # one <a>one</a>
3 # is two three
4 # three
5 $/ = ".\n";
6 while (<>) {
7 next if !s{
8 \b # start word ...
9 ([a-z]+) # grab word in $1 and \1
10 ( # save the tags and spaces in $2
11 (\s|<[^>]+>)+ # spaces or HTML tags
12 )
13 (\1\b) # repeated word in $4
14 }
15 "\e[7m$1\e[m$2\e[7m$4\e[m"igx;
16 s/^([^\e]*\n)+//mg; # remove lines that don't contain escapes
17 s/^/$ARGV: /mg; # insert filename at the beginning of the lines
18 print;
19 }
Normalmente el carácter ^ casa solamente con el comienzo de la cadena y el carácter $ con el final. Los \n empotrados no casan
con ^ ni $. El modificador /m modifica esta conducta. De este modo ^ y $ casan con cualquier frontera de línea interna. Las anclas \A y \Z se utilizan entonces para casar con
el comienzo y final de la cadena.
Sigue un ejemplo de uso:
Casiano Rodríguez León
