Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/05/2009, 16:02
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 18 años
Puntos: 20
Respuesta: Pasar sencillo programa en Python a PERL

Cita:
Iniciado por jferrero Ver Mensaje
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.
Esta genial jferrero, menudo crack!

Si me puedes decir como intercambiar las posiciones de la salida, me he dado cuenta que la salida buena debería ser

A >> B
y no B >> A

Es decir

El alias no es [email protected]
Sino que es

He intentado cambiar el orden de las variables en el programa pero si lo hacia petaba :S