[SP-pm] Pegadinha do internals do Perl

Solli Honorio shonorio at gmail.com
Thu Mar 14 16:54:44 PDT 2013


Só para o conhecimento de vocês, alterei o código de :

$alguma_coisa = ($array->[0]->{data} || time);

... para ..

$alguma_coisa = scalar @$array ? $array->[0]->{data} : time;

Não tenho certeza se é a melhor opção, mas depois de comer um monte de
tempo nisto, foi a mais rápida que veio a minha cabeça.


Em 14 de março de 2013 20:51, Solli Honorio <shonorio em gmail.com> escreveu:

> Pessoal,
>
> Hoje passei uma parte do dia tentando descobrir porquê a minha lógica não
> estava funcionando, e no final descobri que era uma pegadinha do internals
> do Perl.
>
> O lance era o seguinte :
>
> <code>
>
> $array = [];
> say scalar @$array; #retorna ZERO !
> $alguma_coisa = ($array->[0]->{data} || time);
> say scalar @$array; #retorna UM !
>
> if ( scalar @$array ) {
>    # destrói tudo !
> } else {
>    # destrói menos !
> }
>
> </code>
>
>
> Este era o meu poblema, eu achei que se não existisse o elemento no array,
> eu poderia continua a minha vidinha, afinal mesmo fazendo um
> Data::Printer::p o array sempre volta empty. Mas o contador de elementos
> dele altera, ferrando toda a minha lógica depois.
>
> É isto aí !
>
> Abraços,
>
> Solli Honorio
>
> --
> "o animal satisfeito dorme". - Guimarães Rosa
>



-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130314/39207917/attachment-0001.html>


More information about the SaoPaulo-pm mailing list