A ver... que no me entero...
Si tenemos que tomar como patrón la primera línea, entonces no deberían salir las líneas B, C y D.
Si la premisa es: «sacar, de las líneas que coinciden en la primera columna, aquellas que tengan el menor valor de la cuarta columna,» entonces la salida debería ser:
Using text Syntax Highlighting
A 1 ABC 12
B 1 AWE 0
C 3 ZSE 15
D 2 MLP 3
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
En cuanto al código presentado, tienes un problema: haces una doble lectura de líneas (<FILE>), con lo que solo estás procesando la mitad del archivo.
Lo mejor es que guardes las líneas en un
array:
Using perl Syntax Highlighting
open FILE, '<archivo';
my @lineas = <FILE>;
close FILE;
for (my $i = 0; $i < @lineas-1; $i++) { # comparamos la i-ésima línea...
for (my $j = $i+1; $j < @lineas; $j++) { # con las j-ésimas líneas siguientes
# aquí comparamos la línea $lineas[$i] con la $lineas[$j]
# si la línea $i tiene el mismo campo 1 que la $j, comparamos el cuarto valor
# si la línea $j tiene un valor menor, guardamos la línea $j en lugar de la $i
# (la $i va guardando el mínimo) y eliminamos la $j (no es necesaria para la
# siguiente vuelta de $i)
}
}
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Usando índices $i y $j, podemos navegar por el
array @lineas.