[SP-pm] Pegadinha do internals do Perl

Solli Honorio shonorio at gmail.com
Thu Mar 14 17:05:30 PDT 2013


Na verdade não estou adicionando valor, o compilador está criando o
elemento para confirmar que ele não tem valor.

Eu estava debugando e quando eu digitava 'x $array' data empty array ref.
Mas depois num teste aparte utilizando o Data::Printer é mostrado uma nova
estrutura com valor nullo.

Ou seja, eu tinha na minha cabeça que ele iria dar problema logo de cara,
pois o elemento 0 não existe, não vou dar erro e continuar o processamento
(que queria isto), mas o comportamento na verdade foi do compilador criar a
estrutura (alocar) para dizer que não existe nada. Mas nunca é atribuído o
valor de time ao elemento.

Solli Honorio


Em 14 de março de 2013 20:55, Renato Santos <renato.cron em gmail.com>escreveu:

> 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 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
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm em 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 em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


-- 
"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/b107aaeb/attachment.html>


More information about the SaoPaulo-pm mailing list