Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/05/2009, 04:32
jferrero
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Respuesta: Pasar sencillo programa en Python a PERL

Esta es una de las muchas formas de hacerlo:
Código:
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

my %direccion_real_del;

while (<>) {
    chomp;
    my($usuario,$direccion) = split ';';

    if ($usuario !~ /Alias de (.+)/) {
        $direccion_real_del{$usuario} = $direccion;
    }

    else {
        $usuario = $1;
        print "$direccion_real_del{$usuario};$direccion\n"
#           if $direccion_real_del{$usuario};
        ;
    }
}
En vez de buscar si el user2 está contenido en la cadena user1, miramos justo lo contrario: que no contenga "Alias de ". Entonces sabemos que es una línea que muestra el $usuario y su dirección, así que las guardamos en el diccionario.

En cambio, si sí es un alias, sacamos el $usuario del primer par de paréntesis de captura de la expresión regular ($1) y (suponemos que ya la conocemos y por eso) pintamos su dirección real junto con la del alias.

Tiene la ventaja de que recuerda las direcciones reales de todos los usuarios, por si las líneas del fichero de entrada aparecen mezcladas.
__________________
JF^D Perl Programming en Español

Última edición por jferrero; 11/05/2009 a las 08:47