Usuario:JoaquinFerrero/Filtrado Múltiple Enlazamiento
Este programa filtra los enlaces repetidos de una página Wiki que se pase como argumento, en forma de archivo.
#!/usr/bin/env perl
#
# Filtrado del enlazamiento múltiple en código Wiki.
# Joaquín Ferrero. Septiembre 2013.
#
# Lo que hace este programa es eliminar los enlaces duplicados
# para que solo aparezcan una vez a lo largo de toda la página.
#
# 20130923. Primera versión
# 20130925. Segunda versión, mejor tratamiento de enlaces con descripción alternativa
use v5.16;
use utf8::all;
use autodie;
@ARGV == 1
or die "Uso: $0 <archivo a procesar>\n";
my $archivo = shift;
-r $archivo
or die "ERROR: No puedo leer [$archivo]: $!\n";
my %ya_visto;
open my $ARCH, '<:utf8', $archivo;
while (my $linea = <$ARCH>) {
while ($linea =~ /\[\[(.+?)\]\]/g) {
my $enlace = $1;
if ($ya_visto{$enlace}++) {
my $posicion = $-[0]; # primera posición detectada
my $enlacedestino = $enlace =~ s/^.+[|](.+?)$/$1/r; # simplificamos enlaces con descripción
#say $linea, (' ' x $posicion), "\\", ('-' x (length($enlace)+2)), "/\n[$enlace]=>[$enlacedestino]";
$linea =~ s/\[\[\Q$enlace\E\]\]/$enlacedestino/; # esta es la buena
pos($linea) = $posicion; # volvemos atrás
}
}
print $linea;
}
close $ARCH;