[Rio-pm] Os 5 blocos especiais

Solli Honorio shonorio em gmail.com
Segunda Setembro 1 19:48:10 PDT 2008


5.10 é muita modernidade pra mim ainda ;)

Solli M. Honório

2008/9/1 Lucas Mateus <lucasmateus.oliveira em gmail.com>

> > <code>
> > perl -e 'print "teste\n"; UNITCHECK { print "dentro do unitcheck\n"; exit
> 1 }; print "outro tese\n"'
> > <code>
>
> > o resultado será
> > teste
>
> > dentro do unitcheck
>
> E outra coisa, a saida não devia ser isso, devia ser apenas "dentro do
> unitcheck" pois para esse exemplo, o bloco UNITCHECK eh executado antes de
> qualquer coisa. Isso aconteceu pra mim, Perl 5.10
>
>
> 2008/9/1 Lucas Mateus <lucasmateus.oliveira em gmail.com>
>
>> Haaaa veja so, uma pequena modificação no seu codigo, e não sai mais
>>
>> <code>
>> perl -e 'print "teste\n"; UNITCHECK { print "dentro do unitcheck\n";
>> exit}; print "outro tese\n"'
>> <code>
>>
>> OU
>>
>> <code>
>> perl -e 'print "teste\n"; UNITCHECK { print "dentro do unitcheck\n"; exit
>> 0 }; print "outro tese\n"'
>> <code>
>>
>> Percebi que somente quando a função exit() preence a var $? com valor
>> diferente de 0 que a saida do programa é feita.
>>
>> 2008/9/1 Solli Honorio <shonorio em gmail.com>
>>
>>> Ola meu querido, você vai fazer xixi na cama desta maneira brincando com
>>> fogo... mas vamos lá ...
>>>
>>> O UNITCHECK e CHECK estão terminando sim o teu programa, experimenta
>>> terminar com 'exit 10' e capturar o código de retorno, ou simplesmente algo
>>> do tipo
>>>
>>> <code>
>>> perl -e 'print "teste\n"; UNITCHECK { print "dentro do unitcheck\n"; exit
>>> 1 }; print "outro tese\n"'
>>> <code>
>>>
>>> o resultado será
>>> teste
>>> dentro do unitcheck
>>>
>>> ... outra coisa, no meu perl 5.8.8 o teu exemplo dá um erro no CHECK, mas
>>> não olhei pq está ocorrendo isto, depois eu verifico em casa, abraço ...
>>>
>>>
>>> 2008/9/1 Lucas Mateus <lucasmateus.oliveira em gmail.com>
>>>
>>>> Hj tive uma dúvida quanto aos blocos especias de execução, BEGIN,
>>>> UNITCHECK, CHECK, INIT e END.
>>>>
>>>>
>>>>
>>>> Quanto a ordem de execução:
>>>>
>>>> <code>
>>>> perl -e 'END{print "END".$/} BEGIN{print "BEGIN".$/} INIT{print
>>>> "INIT".$/} UNITCHECK{print "UNITCHECK".$/} CHECK{print "CHECK".$/} print
>>>> "teste".$/;'
>>>> </code>
>>>>
>>>> RESULTADO:
>>>>
>>>> BEGIN
>>>> UNITCHECK
>>>> CHECK
>>>> INIT
>>>> teste
>>>> END
>>>>
>>>>
>>>>
>>>> O que não consegui entender é porque os blocos UNITCHECK e CHECK não
>>>> finalizam o programa com a função exit() como os blocos BEGIN e INIT ?
>>>>
>>>> MEUS TESTES:
>>>>
>>>> perl -e 'print "teste\n"; UNITCHECK { 0 || exit }'  # teste
>>>> perl -e 'print "teste\n"; CHECK { 0 || exit }'      # teste
>>>> perl -e 'print "teste\n"; INIT { 0 || exit }'       # [nada]
>>>>
>>>>
>>>>
>>>>
>>>> LEITURA:
>>>> http://perldoc.perl.org/perlmod.html#BEGIN%2c-UNITCHECK%2c-CHECK%2c-INIT-and-END
>>>>
>>>>
>>>> _______________________________________________
>>>> Rio-pm mailing list
>>>> Rio-pm em pm.org
>>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>>
>>>
>>>
>>>
>>> --
>>> "o animal satisfeito dorme". - Guimarães Rosa
>>>
>>> _______________________________________________
>>> Rio-pm mailing list
>>> Rio-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>
>>
>>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20080901/9ad56773/attachment-0001.html>


Mais detalhes sobre a lista de discussão Rio-pm