Hola a todos,
Les escribo para lo siguiente: tengo que procesar una base de datos, para ello dispongo de un par de archivos.
El archivo 1 contiene un listado de palabras que deseo buscar en el archivo 2 (base de datos). El archivo 1 tiene la siguiente estructura (solo es un fragmento):
Using text Syntax Highlighting
zf-C2H2
WD40
I-set
Ank
fn3
Cadherin
7tm_1
V-set
Collagen
LRR_1
Pkinase
Sushi
EGF_CA
RRM_1
KRAB
C1-set
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Ahora el archivo 2, que es mi base de datos, tiene la siguiente estructura:
Using text Syntax Highlighting
1-cysPrx_C 1-cysPrx_C
1-cysPrx_C AhpC-TSA
14-3-3 14-3-3
14-3-3 Acetyltransf_1
14-3-3 LIG_14-3-3_1
14-3-3 LIG_14-3-3_2
14-3-3 LIG_14-3-3_3
14-3-3 LIG_14-3-3_none
2-Hacid_dh 2-Hacid_dh
2-Hacid_dh 2-Hacid_dh_C
2-Hacid_dh ACT
2-Hacid_dh LIG_CtBP
2-Hacid_dh_C 2-Hacid_dh
2-Hacid_dh_C 2-Hacid_dh_C
2-oxoacid_dh 2-oxoacid_dh
2-ph_phosp 2-ph_phosp
2OG-FeII_Oxy 2OG-FeII_Oxy
2_5_RNA_ligase 2_5_RNA_ligase
3-alpha MOSC
3-dmu-9_3-mt 3-dmu-9_3-mt
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Contiene un par de columnas separadas por "\t". Lo que deseo hacer es buscar para cada miembro de la lista del archivo 1 su ocurrencia en cualquiera de las dos columnas en el archivo 2, y que en cada ocurrencia que encuentre imprima ambas columnas.
Para ello he escrito el siguiente código, solo que no he logrado hacerlo funcionar, y cuando lo he logrado me duplica la información; supongo que tengo algún error en la forma como estoy utilizando los bucles. Agradecería que pudieran ayudarme,
Saludos.
Código:
Using perl Syntax Highlighting
#! /usr/bin/perl
open (FILE1, "only_domains_human_proteome.txt");
open (FILE2, "only_interfaces3did.txt");
my @firstdb=<FILE1>;
my @seconddb=<FILE2>;
foreach $query (@firstdb){
chomp $query;
for ($i=0;$i<scalar(@seconddb);$i++){
my @domaint = split ("\t", $seconddb[$i]);
chomp $domaint[1];
if ($domaint[0] =~ $query){
print "$domaint[0]\t$domaint[1]\n";
}
}
}
close FILE1;
close FILE2;
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4