Ciao a tutti,
ho un problema con il confronto di due array composti da hash referenziati

array1[hash1,hash3,hash5,hash7]
array2[hash1,hash5]

tutti gli hash sono composti così

hash{"nn_ini"->valore, "nn_fin"->valore, "codice"->valore, "seq"->valore}

i valori contenuti nelle chiavi di alcuni hash possono essere identici (es. valori hash1 di array1= valori hash1 di array2)

mi serve di stampare i valori delle hash contenute in array1 che non compaiono in array2

per fare questo ho fatto un doppio foreach ecco il codice:

foreach my$glimm(@array1){
foreach my $ncbi (@array2){

if (($$glimm{"nn_ini"}==$$ncbi{"nn_ini"})&&($$glimm{" nn_fin"}==$$ncbi{"nn_fin"})){
print FILE ">",";",$$glimm{"nn_ini"},";",$$glimm{"nn_fin"},"; ",$$ncbi{"codice"},"\n",$$glimm{"seq"},"\n";
}

elsif (($$glimm{"nn_ini"}==$$ncbi{"nn_ini"})&&($$glimm{" nn_fin"}!=$$ncbi{"nn_fin"})){
print FILE ">",";",$$glimm{"nn_ini"},";",$$glimm{"nn_fin"},"; ",$$ncbi{"codice"},";","first_codon","\n",$$glimm{ "seq"},"\n";
}

elsif (($$glimm{"nn_ini"}!=$$ncbi{"nn_ini"})&&($$glimm{" nn_fin"}==$$ncbi{"nn_fin"})){
print FILE ">",";",$$glimm{"nn_ini"},";",$$glimm{"nn_fin"},"; ",$$ncbi{"codice"},";","last_codon","\n",$$glimm{" seq"},"\n";
}

elsif(($$glimm{"nn_ini"}!=$$ncbi{"nn_ini"})&&($$gl imm{"nn_fin"}!=$$ncbi{"nn_fin"})){
print ">",$$glimm{"nn_ini"},";",$$glimm{"nn_fin"},"\n",$ $glimm{"seq"},"\n";
next;
}
}

}

l'ultimo elsif mi da problema, entra in loop...

ho anche provato a sostituirlo con un else e togliere le condizioni, pensando che dovrebbe stampare tutto il resto non compreso nelle condizioni iniziali invece niente, sempre loop

potete aiutarmi?
grazie 1000