Opa,<br><br>isso é realmente instigante a não ser que você se acostume :P hehe<br><br>Bom, usaremos o operador &lt;=&gt; que é utilizado para comparações de valores numéricos junto ao comando sort. Para a comparação de strings utilizar-se-á o operador &#39;cmp&#39;.
<br><br>Como é ordem crescente então será usado $a &lt;=&gt; $b, onde $a e $b são variáveis especiais usadas pelo sort e contêm os valores dos itens que estão sendo comparados.<br><br>Para um melhor entendimento:<br>---------------------------8&lt;---------------------------
<br>print &quot;Variáveis \$a e \$b dentro do comando sort:\n&quot;;<br>%hash = (&quot;AA&quot;,5,&quot;CB&quot;,2,&quot;BA&quot;,10,&quot;TG&quot;,3);<br>foreach ( sort {print &quot;$a $b\n&quot;;} keys %hash ){}<br>---------------------------&gt;8---------------------------
<br>* O exemplo acima só exibe como a comparação é feita.<br><br>O conceito é simples, para cada comparação é retornado um valor que poderá ser -1 ($a tem valor inferior a $b), 0 ($a e $b possuem valores identicos) e 1 ($a tem valor superior ao de $b). Note que o uso de $b &lt;=&gt; $a faz a comparação reversa.
<br><br>Feitas as comparações necessárias, teremos o resultado:<br>---------------------------8&lt;---------------------------<br>%hash = (&quot;AA&quot;,5,&quot;CB&quot;,2,&quot;BA&quot;,10,&quot;TG&quot;,3);<br>
foreach ( sort {$a cmp $b} keys %hash ){ print &quot;$_\n&quot;;}<br>
---------------------------&gt;8---------------------------<br>
* Uso do cmp por estarmos comparando as strings.<br><br><br>Por fim, queremos comparar os valores; logo temos que: como $a e $b contêm o valor do item, no caso do uso sobre o keys %hash conterá o nome de cada chave percorrida, então usaremos $hash{$a} e $hash($b} que resultará no valor referente de cada uma das chaves.
<br><br>---------------------------8&lt;---------------------------<br>%hash = (&quot;AA&quot;,5,&quot;CB&quot;,2,&quot;BA&quot;,10,&quot;TG&quot;,3);<br><br>print &quot;Pelas Chaves\n&quot;;<br>print &quot;$_ - $hash{$_}\n&quot; foreach sort keys %hash;
<br><br>print &quot;\nPelos Valors\n&quot;;<br>print &quot;$_ - $hash{$_}\n&quot; foreach sort {$hash{$a} &lt;=&gt; $hash{$b}} keys %hash;<br>---------------------------&gt;8---------------------------<br><br>É isso.<br><br>
Simples como um oi. ;D<br><br>Abraços,<br><br><div><span class="gmail_quote">On 2/16/07, <b class="gmail_sendername">Wagner Arbex</b> &lt;<a href="mailto:arbex@email.com.br">arbex@email.com.br</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Prezados colegas;<br><br>Apesar de ser um programador com razoável tempo de estrada, comecei a<br>trabalhar com Perl muito recentemente... estou no início mesmo.<br><br>Assim, estou aprendendo o caminho das pedras, principalmente me
<br>acostumando com a sintaxe e com a idéia de que &quot;existe mais e uma<br>maneira de fazer&quot;, além disso, tb estou muito impressionado com o que<br>posso fazer e com a flexibilidade que tenho com poucas linhas de<br>
código.<br><br>Tenho uma dúvida de iniciante que já pesquisei bastante, mas não acho<br>a resposta. Parece ser uma dúvida ridícula, mas...<br><br>A questão é que tenho um hash bastante simples, por ex:<br><br>%hash1 = (&quot;AA&quot;,0,&quot;CB&quot;,0,&quot;BA&quot;,0,&quot;TG&quot;,0);
<br><br>Durante a execução do programa os valores &quot;0&quot; são alterados, ficando, por ex:<br><br>(&quot;AA&quot;,5,&quot;CB&quot;,2,&quot;BA&quot;,10,&quot;TG&quot;,3)<br><br>e algumas vezes preciso imprimir o hash ordenado pelo índice e então faço:
<br><br>foreach $n (sort keys %hash1) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print ...<br><br>}<br><br>e obenho o resultado esperado, p ex:<br><br>AA - 5<br>BA - 10<br>CB - 2<br>TG - 3<br><br>Mas o que eu não estou conseguindo fazer é imprimir o hash ordenado
<br>pelo valor e não pelo índice. Ou seja, precisava da seguinte saída:<br><br>CB - 2<br>TG - 3<br>AA - 5<br>BA - 10<br><br>Desde já, aagradeço qq ajuda.<br><br>[]s e obrigado<br>Arbex<br><br>--<br>&nbsp;&nbsp;Wagner Arbex<br>_______________________________________________
<br>Cascavel-pm mailing list<br><a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></blockquote></div>
<br><br clear="all"><br>-- <br>Gabriel Vieira