[SP-pm] Dúvida de iniciante Not an ARRAY reference

Daniel Vinciguerra dan.vinciguerra at gmail.com
Mon Sep 10 07:02:29 PDT 2012


O problema é que você estava tentando dar um foreach em uma estrutura de
hash/array codificada como JSON na resposta...  sendo assim quando você
dava o foreach, o mesmo não entendia aquela variável como sendo uma
estrutura correspondente.

Tirando o json a coisa rolou porque assim vocês estava retornando de fato
uma referencia de um hash/array validos.

[]'s
*
Daniel Vinciguerra*
Web Solutions Architect and Co-Owner at Bivee
http://github.com/dvinciguerra <http://github.com/dvinciguerra>


2012/9/10 Jose Nilton <jniltinho at gmail.com>

> Alterei a linha $self->render(results => {json => $queue}); para:
>
> $self->render(results => $queue);
>
>
> E funcionou.
>
>
> Em 10 de setembro de 2012 07:37, Renato Santos <renato.cron at gmail.com>escreveu:
>
> O erro não tá na declaração do results?  Devia ser um array, não um hash.
>> [{}, {},..  ]
>> Em 10/09/2012 07:25, "Lucas Moraes" <lucastiagodemoraes at gmail.com>
>> escreveu:
>>
>>  com foreach:
>>>
>>> foreach my $key (keys %$results){
>>> print $key;
>>> }
>>>
>>> e
>>>
>>> foreach my $value (values %$results){
>>> print $value;
>>> }
>>>
>>> http://perldoc.perl.org/functions/keys.html
>>>
>>>
>>> Em 8 de setembro de 2012 21:51, Jose Nilton <jniltinho at gmail.com>escreveu:
>>>
>>>>
>>>> Fiz assim,
>>>>
>>>> while ( my ($key, $value) = each(%$results) ) {
>>>>         print "$key => $value\n";
>>>>     }
>>>>
>>>>
>>>> Só aparece esse erro:
>>>> Using a hash as a reference is deprecated at (eval 242)
>>>>
>>>>
>>>> Em 8 de setembro de 2012 20:25, Jose Nilton <jniltinho at gmail.com>escreveu:
>>>>
>>>>
>>>>> Meu templete:
>>>>>
>>>>> <!DOCTYPE html>
>>>>> <html>
>>>>>   <head><title>Queue results</title></head>
>>>>>   <body>
>>>>>     % for my $result (@$results) {
>>>>>         <p><%= $result->{json} %></p>
>>>>>     % }
>>>>>   </body>
>>>>> </html>
>>>>>
>>>>>
>>>>> Minha action no Mojo:
>>>>>
>>>>> sub queue {
>>>>>         my $self  = shift;
>>>>>         my $queue = $self->getQueue;
>>>>>         $self->render(results => {json => $queue});
>>>>> }
>>>>>
>>>>>
>>>>> Erro:
>>>>>
>>>>> *Not an ARRAY reference at template "example/queue2.html.ep" line 5, near "	<p><%= $result->{json} %></p>".*
>>>>>
>>>>>  1.
>>>>>
>>>>> <!DOCTYPE html>
>>>>>
>>>>>   2.
>>>>>
>>>>> <html>
>>>>>
>>>>>   3.
>>>>>
>>>>>   <head><title>Queue results</title></head>
>>>>>
>>>>>   4.
>>>>>
>>>>>   <body>
>>>>>
>>>>>   5.
>>>>>
>>>>>     % for my $result (@$results) {
>>>>>
>>>>>   6.
>>>>>
>>>>> 	<p><%= $result->{json} %></p>
>>>>>
>>>>>   7.
>>>>>
>>>>>     % }
>>>>>
>>>>>   8.
>>>>>
>>>>>   </body>
>>>>>
>>>>>   9.
>>>>>
>>>>> </html>
>>>>>
>>>>>
>>>>> *Stash*
>>>>>
>>>>> {
>>>>>   'controller' => 'example',
>>>>>   'action' => 'queue2',
>>>>>   'results' => {
>>>>>     'json' => {
>>>>>       'pop.com.br' => 1,
>>>>>       'uol.com' => 3,
>>>>>       'yuol.com.br' => 1,
>>>>>       'hotmael.com' => 2,
>>>>>       'hotmnail.com' => 1,
>>>>>       'hotmai.com' => 2,
>>>>>       'gamail.com' => 1,
>>>>>       'sodexo.com.br' => 2
>>>>>     }
>>>>>   }
>>>>> }
>>>>>
>>>>>
>>>>> Como eu faço esse mapeamento.
>>>>>
>>>>> Obrigado, desculpe por essa dúvida.
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> ..............................................................................
>>>>> *Com Deus todas as coisas são possíveis* ::: LinuxPro<http://www.linuxpro.com.br>
>>>>>
>>>>> *"A qualidade nunca se obtém por acaso; ela é sempre o resultado do
>>>>> esforço inteligente." (John Ruskin)
>>>>> "A mente que se abre a uma nova ideia jamais volta ao seu tamanho
>>>>> original" (Albert Einstein)*
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> ..............................................................................
>>>> *Com Deus todas as coisas são possíveis* ::: LinuxPro<http://www.linuxpro.com.br>
>>>>
>>>> *"A qualidade nunca se obtém por acaso; ela é sempre o resultado do
>>>> esforço inteligente." (John Ruskin)
>>>> "A mente que se abre a uma nova ideia jamais volta ao seu tamanho
>>>> original" (Albert Einstein)*
>>>>
>>>>
>>>> =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
>>>
>>>
>> =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
>>
>>
>
>
> --
>
> ..............................................................................
> *Com Deus todas as coisas são possíveis* ::: LinuxPro<http://www.linuxpro.com.br>
>
> *"A qualidade nunca se obtém por acaso; ela é sempre o resultado do
> esforço inteligente." (John Ruskin)
> "A mente que se abre a uma nova ideia jamais volta ao seu tamanho
> original" (Albert Einstein)*
>
>
> =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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120910/0ade2c9f/attachment-0001.html>


More information about the SaoPaulo-pm mailing list