(1) Discuta vantagens e desvantagens de não ser necessário especificar limites de tamanho para arrays em Perl. (1r) A vantagem principal é libertar o programador de ter que testar seus índices antes de aplicá-los às arrays. A desvantagem principal é que o programa fica mais lento, pois estas verificações são feitas internamente, e não há como o programador controlar isso. (2) Diga qual é o significado dos símbolos $, @, e % no ínicio dos nomes de variáveis em Perl. (2r) O símbolo $ denota variáveis escalares, @ denota arrays e % denota arrays associativas, também chamadas hashes. (3) Discuta a seguinte frase: todo hash é uma array, mas nem toda array é um hash. (3r) Esta frase está parcialmente correta, pois hashes podem ser inicializados como arrays de pares chave-valor. Por exemplo, o comando: %myhash = ("a", 1, "b", 2, "c", 3); coloca em %myhash a associação da chave "a" com o valor 1, chave "b" com o valor 2, etc. de modo que temos $myhash{"a"} igual a 1, etc. Contudo, esta "arraização" de hashes não é completa pois não podemos escrever $myhash[0] e achar que estamos acessando o valor "a". O hash %myhash não tem nada a haver com a array @myhash, e quando escrevemos $myhash{1} estamos acessando %myhash, enquanto que quando escrevemos $myhash[1] estamos acessando @myhash. Em suma, podemos dizer que a frase é verdadeira para incializações de hashes apenas. (4) Dê um exemplo que ilustre a seguinte filosofia de Perl: é uma linguagem onde elegância dá lugar a facilidade de uso. (4r) Em geral, consideramos "elegante" um sistema em que poucas regras gerais são suficientes para explicá-lo todo. Em contrapartida, consideramos pouco "elegante" tudo aquilo que representa uma caso especial que tem que ser tratado à parte, fugindo das regras gerais. Em Perl, um exemplo é o fato de poder-se usar índices negativos em arrays. Como sabemos, $a[-1] significa o último elemento da array @a, $a[-2] significa o penultimo, e assim por diante. Isto não é muito elegante, pois o interpretador tem que fazer um "if" aí para decidir o que fazer segundo o índice seja positivo ou negativo, mas para quem programa é uma facilidade adicional. Outro exemplo é a existência da variável implícita $_, que se comporta de modo bastante diferente das outras variáveis, mas é uma ajuda a mais ao programador.