Os hash são gardados usando B-Tree, não é?<br><br><div class="gmail_quote">2010/7/25 Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Além do mais, hashes e arrays tem representações internas bem<br>
distintas. Um hash é basicamente uma tabela, enquanto um array é uma<br>
lista. O Perl sempre vai saber a diferença.<br>
<br>
O que pode confundir é que a linguagem Perl fornece alguns 'syntax<br>
sugars' que abstraem e facilitam o intercâmbio te dados entre hashes e<br>
arrays.<br>
<br>
Embora dê para fazer isso:<br>
<br>
my @array = qw(1 2 3 4);<br>
my %hash = @array;<br>
my @lista = %hash;<br>
<br>
Hashes e arrays são internamente bem diferentes. A cada atribuição,<br>
internamente um objeto diferente é acessado e a conversão adequada é<br>
feita de forma transparente.<br>
<br>
Abraços<br>
<br>
2010/7/25 Eden Cardim <<a href="mailto:edencardim@gmail.com">edencardim@gmail.com</a>>:<br>
<div><div></div><div class="h5">>>>>>> "Thiago" == Thiago Glauco Sanchez <<a href="mailto:thiagoglauco@ticursos.net">thiagoglauco@ticursos.net</a>> writes:<br>
><br>
> Thiago> O perl sabe que vc se refere a um hash pelas chaves { } e a um array<br>
> Thiago> pelos ( ). Os { } indicam que são chves de um hash e ( )<br>
> Thiago> indicam que são elementos de um array. Acho que era esta a<br>
> Thiago> sua pergunta?<br>
><br>
> Na verdade, os parênteses são apenas para forçar precedência e não tem<br>
> relação alguma com tipos de dados. Perl faz a diferenciação entre<br>
> referências para arrays e hashes pela presença de '{}' ou '[]' como indexador:<br>
><br>
> @{$array}[1, 2, 3] = qw(foo bar baz);<br>
> @{$hash}{qw(foo bar baz)} = qw(quux moin meep);<br>
><br>
> O mesmo vale para construção de arrays e hashes anônimos:<br>
><br>
> my $array = ['foo', 'bar', 'baz'];<br>
> my $hash = {'foo', 'quux', 'bar', 'moin', 'baz', 'meep'}<br>
><br>
> Listas são construídas pelo operador ',', que tem precedência menor que<br>
> o operador '=', então, no caso de:<br>
><br>
> @foo = (1, 2, 3);<br>
><br>
> Os parênteses estão sendo usados para forçar a construção da lista antes<br>
> da atribuição. Se fosse:<br>
><br>
> @foo = 1, 2, 3;<br>
><br>
> O resultado seria um array contendo o elemento "1" e uma lista contendo<br>
> 1, 2, 3 retornada em contexto void.<br>
> _______________________________________________<br>
> SaoPaulo-pm mailing list<br>
> <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
> <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Renato Santos<br><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a><br>