Efectivamente, con
$hash{$contador} = [$fichero, $contador];podrías ir agregando entradas del menú, porque es justo la estructura que se pide: un
array anónimo que contiene al menos dos elementos: la entrada que aparece en pantalla y la opción a elegir del menú. Y eso se asocia a la clave del menú, que, en este caso, la has puesto a lo mismo que el usuario debe pulsar.
En cuanto al orden, no veo nada en el manual del módulo que indique el orden de salida de las entradas. Y como las entradas dentro de un
hash no siguen el orden en que fueron escritas, por esa salen, aparentemente, desordenadas.
En eso caso, lo que podríamos hacer es que el
hash que vamos a usar, configurarle para que sí devuelva las claves y valores en el mismo orden en que se crearon.
Para ello, se puede usar un módulo como
Tie::IxHash. Al principio del programa escribes
Using perl Syntax Highlighting
use Tie::IxHash;
my %hash;
tie %hash, Tie::IxHash;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
y a partir de ese momento, el
hash devolverá las claves y valores de forma ordenada. También funcionarán las funciones keys() y values().