[Rio-pm] Os 5 blocos especiais

Solli Honorio shonorio em gmail.com
Segunda Setembro 1 19:45:51 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.

;)

Solli M. Honório

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


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