[SP-pm] hash de hash

Andre Carneiro andregarciacarneiro at gmail.com
Thu Jun 9 20:52:33 PDT 2011


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110610/816ad076/attachment-0001.html>


More information about the SaoPaulo-pm mailing list