Hay otro detalle: fíjate que el return está metido dentro del bucle de lectura de líneas. Lo normal es que esté al final.
Y para pasar los %resultados al programa principal, te vale con el
return %resultados que te puse.
Cuando quieras ver el contenido de una estructura más o menos compleja, puedes usar el módulo Data::Dumper, que viene incluida con tu Perl. Por ejemplo:
Using perl Syntax Highlighting
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
my %hash = (
clave1 => [ 1, 2, 3, 4 ],
clave2 => {
a => 'A',
b => 'B',
},
clave3 => [qw( hola adios )],
);
print Dumper \%hash;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Este programa genera esta salida:
Using text Syntax Highlighting
$VAR1 = {
'clave2' => {
'a' => 'A',
'b' => 'B'
},
'clave3' => [
'hola',
'adios'
],
'clave1' => [
1,
2,
3,
4
]
};
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Y ya ves que te muestra una estructura compleja almacena en %hash.
(Las claves salen desordenadas porque así las guardan los hashes).
Si quieres leer documentación, tienes la última documentación en
https://github.com/perldocES/perldoc-es ... translatedo un poco más bonita en
https://metacpan.org/release/POD2-EShttps://github.com/perldocES/perldoc-es ... erllol.pod te comenta cómo hacer estructuras de arrays de arrays.
El truco para hace estructuras complejas (en tu programa metes arrays como valores de un hash) es que debes usar referencias, que al fin y al cabo son valores escalares, por lo que se pueden guardar como valores del hash. Cuando haces
$resultados{ID} = [@list];estás "desplegando" los valores almacenados en @list, agrupados con los corchetes creas un array anónimo, cuya referencia guardas en el hash %resultados, en la clave 'ID'. Si le haces un Dumper, sale
Using text Syntax Highlighting
$VAR1 = {
'ID' => [
'',
'',
'',
''
]
};
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
(no salen valores dentro del array, por lo que te comenté en el correo anterior).
Para aprender sobre referencias, está el documento perlref, pero se te puede hacer algo pesado.
https://github.com/perldocES/perldoc-es ... erlref.podQuizás más amigable sea perlreftut, que es un tutorial:
https://github.com/perldocES/perldoc-es ... reftut.podToda esta documentación está en tu propio ordenador, que puedes ver con el comando
perldoc perlreftut, pero en inglés. Si quieres verlo en castellano, debes instalarte el paquete POD2::ES, pero si quieres puedes verlas vía web, con los enlaces que te he pasado.
Para entender los hashes, también está perldata, pero es muy extensa. Busca por la palabra hash.
https://github.com/perldocES/perldoc-es ... rldata.podLo básico es: los hashes almacenan pares clave/valor. Y las claves son únicas, por lo que solo se puede almacenar un valor para esa clave. Y los valores son siempre escalares (números, letras, cadenas de texto, referencias a otras estructuras).
Truco: hay código Perl para leer archivos Uniprot por Internet. Puedes mirarlos para inspirarte. Inténtalo. Si te atascas, vuelve por aquí y te daremos más pistas.