Erros comuns na questão de Perl da P2

Erros comuns na questão de Perl da P2

por Marcelo Reis -
Número de respostas: 2
Oi povo!

Para auxiliar os estudos do pessoal que vai fazer a sub amanhã, segue uma lista de alguns dos erros mais comuns na questão de Perl na prova 2:

- uso do operador diamond ( <> ): muita gente teve dificuldade em lidar com abrir o arquivo a partir do nome passado como argumento e, caso nenhum nome fosse especificado, ler da entrada padrão. O operador diamond faz exatamente isso: ele automatiza a leitura de arquivos passados como argumentos e, caso nenhum seja especificado, ele lê da entrada padrão, tal qual o <STDIN>. Vale a pena ver novamente o exercício 3 da aula 27 e a sua respectiva solução.

- funções "sort" e "reverse": essas funções recebem como argumento uma lista ou um array e devolvem uma lista, que no exercício deveria ser guardada em um array! (teve gente que guardou em um hash, o que estava errado no contexto do exercício). Já as funções "keys" e "values" recebem um hash e devolvem, respectivamente, uma lista de chaves e valores desse hash.

- ordenação usando "for" e variáveis auxiliares: muita gente usou um "for" e uma variável auxiliar para fazer a ordenação, como se estivesse em linguagem C; tudo bem, funciona, mas a ideia seria aproveitar os recursos da linguagem Perl para fazer esse trabalho mais facilmente (no caso, utilizando a função sort).


Acho que esses foram os principais pontos; uma boa prova, para quem fazer a sub amanhã!

[]s,




Em resposta à Marcelo Reis

Re: Erros comuns na questão de Perl da P2

por Tonny Cordeiro -
Marcelo, gostaria de saber se o código abaixo é desnecessário?

if( defined $frequencia{$1} ){
$frequencia{$1}++;
}
else{
$frequencia{$1} = 1;
}

Basta fazer a operação abaixo, uma vez que o Perl inicializa sozinho "$frequencia{$1}", certo? Daí o código acima seria substituido por:
$frequencia{$1}++;

Eu sei que funciona assim. Gostaria de saber se na prova também pode ser feito dessa maneira.

Tonny
Em resposta à Tonny Cordeiro

Re: Erros comuns na questão de Perl da P2

por Marcelo Reis -
Basta fazer direto a operação $frequencia{$1}++; você só precisa ter cuidado com o contexto: por exemplo, se você quiser imprimir todas as chaves de um hash de frequências de vogais, se ao contar as vogais de um texto a vogal "i" não aparecer nenhuma vez, ao iterar para todas as vogais na hora de imprimir, na vez de $frequencia{'i'} você teria um warning de undef.