[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