[Rio-pm] Os 5 blocos especiais

Lucas Mateus lucasmateus.oliveira em gmail.com
Segunda Setembro 1 21:16:43 PDT 2008


> Faz sentido, pois além de comentar os 'fecha blocos', também sempre
executo o 'exit' com algum valor ;) .... já sofro muito com programas que
terminam sem código algum.

É eu sempre digo isso pro Viegas, digo que os codigos no exit() sao
importante para os sysadmins, tbm sempre coloco algum codigo, apesar que 0 é
um deles hehehehhehe, e so descubri isso pq peguei um codigo Perl que dava
exit()  no bloco CHECK mas o programa continuava executando, achei curioso,
testei no Perl 5.8.8 e 5.10 (RH e Slackware) o comportamento é o mesmo.

Não achei nenhuma informação sobre esse comportamento do interpretador.

2008/9/1 Solli Honorio <shonorio em gmail.com>

> 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
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20080902/89064f74/attachment.html>


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