Esta es una posible solución, pero como no tengo los ficheros de entrada, no sé si estará bien la salida.
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
### Cabecera
open my $OUTPUT, '>>', 'prueba_identificar_cluster_motifs_altenativa.gff';
print $OUTPUT "Chr\tFT\tFeature\tstart\tend\t#Cluster\tCluster\tDistancia\tDescripcion\n";
### Leer el primer archivo
open my $ARQ, '<', $ARGV[0] or die "can not open the file $ARGV[0]";
my @arq = <$ARQ>;
close $ARQ;
### Leer el segundo archivo
open my $LIST, '<', $ARGV[1] or die "can not open the file $ARGV[1]";
my @list = <$LIST>;
close $LIST;
### Comparación
for my $lastline (@arq) { # para todas las líneas del primer archivo
my $n = 0;
for my $thisline (@list) { # para todas las líneas del segundo archivo
if ( $thisline ne $lastline ) { # solo miramos si las líneas son distintas
my ($chr1, $BS1, $FT1, $s1, $e1, undef, undef, undef, $gene1) = split /\t/, $thisline;
my ($chr2, $BS2, undef, $s2, $e2, undef, undef, undef, undef ) = split /\t/, $lastline;
my $dist = $s1 - $e2;
if (
$chr1 eq $chr2
and $BS1 eq $BS2
and $dist > 0
and $dist <= 50
and $s1 != $s2
and $e1 != $e2
) {
$n++;
print $OUTPUT join("\t", $chr1, $BS1, $FT1, $s1, $e1, $n, $s2-$e2, $dist, $gene1);
}
}
}
}
close $OUTPUT;
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Notar que $gene1 lleva el carácter de retorno de carro, porque no se lo hemos quitado antes (no hay chomp).
También notar que solo creamos las variables que vamos a usar en la comparación en la impresión del resultado. El resto de campos los llevamos a 'undef', es decir, quedan descartados automáticamente.