¿Por qué necesita $ al acceder a elementos de matriz y hash en Perl?

Dado que las matrices y los hashes solo pueden contener escalas en Perl, ¿por qué tiene que usar $ para decirle al intérprete que el valor es un escalar al acceder a elementos de matriz o hash? En otras palabras, asumiendo que tienes una matriz@myarray y un hachís%myhash, ¿por qué necesitas hacer:

$x = $myarray[1];
$y = $myhash{'foo'};

en lugar de simplemente hacer:

$x = myarray[1];
$y = myhash{'foo'};

¿Por qué los anteriores son ambiguos?

¿No sería ilegal el código Perl si fuera algo menos que un $ en ese lugar? Por ejemplo, ¿no son todos los siguientes elementos ilegales en Perl?

@var[0];
@var{'key'};
%var[0];
%var{'key'};

Respuestas a la pregunta(9)

Su respuesta a la pregunta