Bienvenido a los foros de Perl en español, Godrick.
Hay algunos problemas que hay que resolver antes...
- No sabemos qué son y qué contienen las variables %codigogenetico, %frecuencia, %hash, %f1.
- La variable $abc la inicializas con un valor numérico en la línea 7, pero luego haces una concatenación de cadenas de caracteres en la línea 23... así que sospecho que la línea 7 debería escribirse como my $abc = ''; .
- Declaras las variables con my(), pero no veo que uses el modo use strict;. Si lo hicieses, Perl te avisaría de que no sabe de dónde viene la variable %codigogentico de la línea 15. Seguramente, le falta una 'e'.
- La línea 10 es terrible... ¿que quieres hacer ahí?
Sospecho que %codigogenetico mantiene la correspondencia entre codones y sus aminoácidos correspondientes, como aparece en la línea 121 de
este programa.
Entonces... por cada
$codon que hay en los
@codones que hemos leído, obtenemos su aminoácido correspondiente con
$codigogenetico{$codon}. Y podemos llevar la cuenta de las apariciones de cada aminoácido con
$contador{$codigogenetico{$codon}}++. Solo queda hacer un bucle por todos los aminoácidos encontrados (
for $amino (keys %contador) {}) y, por cada uno, sacar la media con respecto al total (
$frec{$amino} = $contador{$amino} / @codones).
Ya tienes en %frec las frecuencias de aparición por aminoácido.
No sé si era eso lo que querías hacer.