Saltar a contenido

Recetas Perl

Leer desde consola

Al leer desde consola hay que hacer un chomp para que quite los caracteres de fin de línea que introduce. Por ejemplo:

print "Introduce nombre: ";
my $nombre = <STDIN>;
chomp $nombre;
print "\nEl número de teléfono de $nombre es $telefonos{$nombre}";

Wiki clásico a creole

Pasándole un fichero de tipo wiki clásico (gforge) lo convierte en wiki con sintaxis creole (bitbucket)

#!/usr/bin/perl
# wiki2creole.plx
# ... Pasándole un fichero de tipo wiki clásico (gforge)
# ... lo convierte en wiki con sintaxis creole (bitbucket)

# Primer intento: Version 0.1
# convirtiendo caracteres simples

# TODO:
# . Dar la vuelta a las urls: 
# ... [a|b] => [[b|a]]
# Tabla de caracteres a convertir
#  . __     =>  **
#  . !      =>  =   (a comienzo de línea)
#  . ''     =>  //  

#print "Fichero a tratar (el fichero salida tendrá el mismo nombre con la extensión .wiki) :\n";
#my $entrada = <STDIN>;
#chomp ($entrada);
my $entrada ="prueba.txt";
my $salida = "$entrada.wiki";

open(IN, $entrada); 
open(OUT, ">$salida"); 
while($linea = <IN>) { 
    $linea =~ s/^(\*+)/$1 /g; #listas
    $linea =~ s/'{3}/\*\*/g; # itálicas y negrita
    $linea =~ s/'{2}/\/\//g; # itálicas
    $linea =~ s/_{2}/ \*\*/g; # negrita
    $linea =~ s/^!+/=/g; #títulos
    $linea =~ s/\[(.*)\|(.*)\]/\[\[$2\|$1\]\]/g; #urls
    $linea =~ s/^\-+/----/g; #líneas horizontales
    $linea =~ s/!([A-Z])/$1/g; #caracteres correctores de urls automáticas
    print OUT $linea;
} 
close(IN);
close(OUT);

schemaSpy

Modifica los html generados por schemaSpy para eliminar los anuncios y los botones de donación

#!/usr/bin/perl
# genera.plx
# ... Modifica los html generados por schemaSpy
# ... para eliminar los anuncios y los botones de donación
# ... le añade una entrada a las tablas de valores

print "Indica la ruta donde están los ficheros generados por schemaSpy \n   [/cygdrive/c/Aplicaciones/sgf2/doc/diseño/bbdd/modelo]       : ";
my $dirHtml = <STDIN>;
chomp ($dirHtml);
if ($dirHtml eq '') {
    #Si no se ha dado ningún valor, lo toma por defecto
    $dirHtml = '/cygdrive/c/Aplicaciones/sgf2/doc/diseño/bbdd/modelo';
}
my @listaHtml=`find $dirHtml -type f -name "*.html"`;
chomp (@listaHtml);

for (@listaHtml) {
    print "Procesando: $_";
    open(IN, $_); 
    print ".";
    open(OUT, ">$_.tmp"); 
    print ".";
    while($linea = <IN>) { 
        if ( $linea =~ /donate/ or $linea =~ /google_ad/  or $linea =~ /sourceforge\.net/) {
            #elimino las entradas a publicidad y donacion
            $linea = '';
        } else {
            #cambios en las líneas
            $linea =~ s/^src="http:\/\/pagead2//g;
        }
        if ( $linea =~ "<a href='index.html' title='All tables and views in the schema'>Tables</a></li>" ) {
            # se añaden enlaces a las tablas de valores
            $linea = $linea . "\n<li><a href='tablas.valores.html' title='Tablas de valores'>Tablas de valores</a></li>"
        }
        print OUT $linea;
    } 
    print ".";
    close(IN);
    close(OUT);
    `mv $_.tmp $_`;
    print ".";
    print "OK\n";
}

# Copia los ficheros necesarios para las tablas de valores
print "Copiando tablas de valores ";
`cp Tabla*.html tabla*.html $dirHtml`;
print "...OK";

Última actualización: August 15, 2021