[Cascavel-pm] Outro probleminha....
Nelson Ferraz
nferraz em phperl.com
Terça Outubro 7 09:30:58 CDT 2003
Alceu R. de Freitas Jr. wrote:
> Hashes não podem ser ordenados como arrays usando a
> função sort. Uma forma de fazer isso é criar um array
> das chaves do array com um
> my @array = keys($hash);
>
> e ordenar o array com sort:
>
> sort(@array);
>
> depois um loop:
>
> foreach $chave(@array) {
>
> print "$hash{$chave}\n";
>
> }
Completando a resposta do Alceu:
Assim como na Língua Portuguesa, existe mais de uma maneira de se dizer
a mesma coisa. A maneira mais comum, e portanto aceita, de se escrever o
programa acima, é a seguinte:
foreach (sort keys %hash) {
print "$hash{$_}\n";
}
Observe que o programa fica ainda mais legível, pois você vai
diretamente ao ponto, sem rodeios.
Inverter a ordem da frase, você também pode. Embora isto reduza um pouco
a legibilidade:
print "$hash{$_}\n" foreach (sort keys %hash);
Em algumas situações vale a pena lançar mão deste recurso.
Finalmente, você poderia usar o map:
print map("$hash{$_}\n",sort keys %hash);
Acredito que, neste caso, o map compromete a legibilidade sem oferecer
nenhum benefício claro.
Concluindo: é importante conhecer as diversas opções para que você possa
se expressar da maneira mais clara possível.
--
[]s
Nelson
________________________________________________________________
Nelson Ferraz
GNU BIS: http://www.gnubis.com.br
PhPerl: http://www.phperl.com
Mais detalhes sobre a lista de discussão Cascavel-pm