[SP-pm] hash de hash

Andre Carneiro andregarciacarneiro at gmail.com
Thu Jun 9 20:55:11 PDT 2011


oops

my $hash_ref = [1=>'a',2=>'b']; #FAIL! Ta errado

my $hash_ref = {1=>'a',2=>'b'}; #TA CERTO...


Mals!


Em 10 de junho de 2011 00:52, Andre Carneiro
<andregarciacarneiro at gmail.com>escreveu:

> Eu sinceramente concordo com o Blabos, e digo que prefiro o mod troll on(pq
> o Blabos ta pegando leve...), embora alguns old trolls hoje em dia pareçam
> meio duvidosos sobre os benefícios disso a longo prazo...
>
>
> De qualquer forma...
>
> Isto é um array!
>
> my @array = (1,2,3,4,5);
>
> Isto é um hash!
>
> my %hash = (1=>'a',2=>'b');
> #ou
> my %hash = (1,'a',2,'b'); #mesma coisa...
>
> Ambos são listas!
>
> Agora veja:
>
> my $array_ref = [1,2,3,4,5];
>
> my $hash_ref = [1=>'a',2=>'b'];
>
> Ambos são referências. O primeiro é um arrayref(referencia para array). O
> segundo é um hashref(referencia para hash)
>
>
> Mas vc pode misturar as coisas assim, por exemplo:
>
> my @array = (1,2,{ 1 => 'a'});
> my $item = $array[2]; #em $item vai ter uma referencia para hash
>
>
> #ou assim:
>
> my %hash = (1=>'a',2 => [ 1,2,3,4,5 ]);
> my $item2 = $hash{2}->[0]; #aqui tem uma referencia para o primeiro
> elemento do arrayref, ou seja, 1...
>
>
> #ou assim:
>
> my $array = [1,2,3,4,5,{1=>'a'}];
>
> my $item3 = $array->[5]->{1}; # Isto recupera o scalar referenciado pela
> chave 1, no hashref mais interno, ou seja, 'a'
>
> # E assim por diante..
>
> my $hash = {1 => [1,2,3, { sbrebows => 'naktobrowlious'} , [6,7,8]  ] ,
>                     'skandowblevers' => 'bla' ,
>                   } ;
> .
> my $item4 = $hash->{'skandowblevers'}; #tem a string(scalar) 'bla'
>
> #poxa! Mas como eu acesso o numero 7 que ta no arrayref mais interno???
> my $chatice = $hash->{1}->[4]->[1]; #acho q ta certo...mas ja da pra
> entender a ideia, certo?
>
> Entendendo isso eu posso dizer com certeza que vc estará dando um
> GIGANTESCO passo para entender o que você estiver afim de entender sobre
> Perl. Com exceção do módulo POE(brincadeira) :-p
>
>
> # A limitação teoricamente é a memória da maquina. Mas eu nunca testei até
> o limite. Isso provavelmente não seria lá uma coisa muito legal  de se fazer
> dependendo do caso, sei la...
>
>
> Mais informações? Desculpem, mas eu tenho certeza que isso é para o próprio
> bem de um iniciante em qualquer merda q seja. Experiência própria...
>
> RTFM aqui pra começar:
>
> http://perldoc.perl.org/perlintro.html
> http://perldoc.perl.org/perlreftut.html
> http://perldoc.perl.org/perldsc.html
>
>
> ESTUDE, e traga as suas dúvidas POSTANDO O QUE vc quer fazer e COMO VC
> TENTOU fazer. Caso contrário fica difícil te ajudar...
>
>
>
>
> Cheers!
>
>
>
> 2011/6/9 Renato Santos <renato.cron at gmail.com>
>
>> blabos nao precisava falar neste tom neh ;P
>> cabou cerveja?
>>
>> pelo menos aqui, onde trabalho, é normal falar array de hash que
>> automagicamente sabemos que é uma array[ref] de hashref
>>
>>
>> 2011/6/9 Hernan Lopes <hernanlopes at gmail.com>
>>
>>> vc se refere a estrutura de dados.
>>> um hash é "chave --> valor" ( onde valor pode ser qualquer coisa)
>>> array é uma lista de coisas.. pode ser uma lista de itens de compra, ou
>>> uma lista de hash, etc
>>>
>>> my $hash_frutas_cores = {
>>>     banana => 'amarelo',
>>>     abacate => 'verde',
>>>     mamao => 'laranja',
>>> };
>>>
>>> my @lista_frutas = (
>>>     'banana',
>>>     'abacate',
>>>     'mamao',
>>> );
>>>
>>> foreach my $fruta ( @lista_frutas ) {
>>>     print "\nA cor da frutinha $fruta é: " . $hash_frutas_cores->{ $fruta
>>> } ;
>>> }
>>> print "\nhmm... frutinha....";
>>>
>>>
>>> vc precisa aprender sobre scalars..
>>> veja dois exemplos de array:
>>>
>>> A. exemplo array1:
>>>
>>> my @lista_frutas = (
>>>     'banana',
>>>     'abacate',
>>>     'mamao',
>>> );
>>> foreach my $item ( @lista_frutas ) {
>>>     print $item;
>>> }
>>>
>>> B. exemplo array2:
>>> my $lista_frutas = [
>>>     'banana2',
>>>     'abacate2',
>>>     'mamao2',
>>> ];
>>> foreach my $item ( @{ $lista_frutas } ) {
>>>     print $item;
>>> }
>>>
>>>
>>> Agora, 2 exemplos de hash:
>>>
>>> A. exemplo de hash
>>> my $hash_item = {
>>>     banana => 'amarela',
>>>     laranja => 'laranja',
>>> };
>>> foreach my $key ( keys %{ $hash_item } ) {
>>>    print $hash_item->{ $key };
>>> }
>>>
>>>
>>> B. outro exemplo de hash:
>>> my %hash_item = (
>>>     banana => 'amarela',
>>>     laranja => 'laranja',
>>> );
>>> foreach my $key ( keys %hash_item ) {
>>>    print "\n" . %hash_item{ $key };
>>> }
>>>
>>>
>>>  2011/6/9 Teddy Hammer <teddyhammer at hotmail.com>
>>>
>>>>  Ae povo, blz?
>>>> Tava olhando uns exemplo que baixei da net sobre hash de hash, array de
>>>> hash. Complicado de visualizar a coisa heim!!!
>>>> Num tem nada mais facil pra entender isso?
>>>>
>>>> =begin disclaimer
>>>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>>> =end disclaimer
>>>>
>>>>
>>>
>>> =begin disclaimer
>>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>>
>>
>>
>> --
>> Renato Santos
>> http://www.renatocron.com/blog/
>>
>> =begin disclaimer
>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
>
> --
> André Garcia Carneiro
> Analista/Desenvolvedor Perl
> (11)82907780
>



-- 
André Garcia Carneiro
Analista/Desenvolvedor Perl
(11)82907780
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110610/379e7d0e/attachment.html>


More information about the SaoPaulo-pm mailing list