Ese es un problema muy común. En estos foros hay docenas de hilos preguntando lo mismo.
La clave es saber cuándo pintar qué cosa a cada lado. Del ejemplo que muestras, ¿cómo sabemos que Resultado4 tiene que ir al lado de ident4? ¿Por que termina en 4?
Una solución es la de meter todos los resultados (archivo 2) en un hash, por ejemplo, y empezar a recorrer las líneas del primer archivo. Para cada línea, imprimimos la primera columna, y luego miramos a ver si existe un resultado en el hash que almacena los resultados, correspondiente a la primera columna. Si es así, imprimimos la segunda columna. Tanto en un caso como en el otro, terminamos el bucle con un carácter de fin de línea.
Algo así (no probado):
Using perl Syntax Highlighting
my %resultados;
open my $FILE2, '<', "Fichero 2";
while (my $resultado = <$FILE2>) {
chomp $resultado;
my ($id) = $resultado =~ /(\d+)$/; # sacamos el último dígito
$resultados{$id} = $resultado; # lo guardamos
}
close $FILE2;
open my $FILE1, '<', "Fichero 1";
open my $SALIDA,'>', "Salida";
while (my $ident = <$FILE1>) {
chomp $ident;
my ($id) = $ident =~ /(\d+)$/; # sacamos el último dígito
print $SALIDA $ident; # primera columna
if ( exists $resultados{ $id } ) { # si existe un resultado correspondiente a ese $id
print $SALIDA "\t $resultados{$id}"; # segunda columna
}
print $SALIDA "\n"; # fin de línea
}
close $SALIDA;
close $FILE1;
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4