[SP-pm] Pegadinha do internals do Perl

Renato Santos renato.cron at gmail.com
Thu Mar 14 16:55:51 PDT 2013


Cara olhando agora esse código, mesmo meio alterado de guineense, você tá
ponto sempre um elemento com valor de time caso não exista array.
zero.data. Então o código tá certo, mesmo sem os parênteses
Em 14/03/2013 20:52, "Solli Honorio" <shonorio at 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
>
> =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/20130314/e8c50ba0/attachment-0001.html>


More information about the SaoPaulo-pm mailing list