El problema está en los índices dentro @grafica.
Estás usando la variable
$. que para Perl tiene un significa especial, como la
$_.
$. es el número de "línea" o de "entrada" leída desde la entrada estándar. En tu caso, si has introducido 20 números, pues $. valdrá 20.
Es mejor que uses otra variable cualquiera para recorrer los índices de @grafica.
Por ejemplo:
Using perl Syntax Highlighting
for my $i (0 .. $#grafica) { # recorrer los índices de 0 al índice más alto de @grafica
# aquí saco la frecuencia y la multiplico por 10 para que me de un numero de entre el 0 y el 10.
$grafica[$i] = int(10 * $grafica[$i] / $total);
if ($grafica[$i] <= 2) { $grafica[$i] = '*' }
...
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4