A ver... se trata de abrir el fichero, leer dos de las columnas de la fila, y sacarlas a otro fichero... siempre y cuando no se hayan salido antes.
Necesitamos abrir los dos ficheros, leer línea a línea el fichero de entrada. Sacar las columnas interesantes. Y si, juntas, no han salido antes, sacarlas al fichero de salida. Para esto último, usaremos un hash, como estás usando.
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
my %hemos_visto;
# Abrimos ficheros en lectura y escritura
open my $IN, q[<], 'HPRD.txt'
or die "ERROR: No puedo leer el fichero: $!\n";
open my $OUT, q[>], 'HPRD2.txt'
or die "ERROR: No puedo escribir: $!\n";
# Para todo el fichero de entrada
while (<$IN>) {
if (/\w/) {
chomp;
my ($columna1, $columna2) = (split /\t/)[2,5];
my $clave = "$columna1\t$columna2\n"; # Nuestra $clave serán las dos columnas
unless ($hemos_visto{$clave}) { # Si no hemos visto a $clave antes...
print $OUT $clave; # la sacamos al fichero
$hemos_visto{$clave} = 'si'; # y ahora sí que la hemos visto
}
}
}
close $IN;
close $OUT;
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4