[SP-pm] Comportamento do do-while

Renato Santos renato.cron at gmail.com
Mon Jul 4 10:26:09 PDT 2011


Então...
O do {} realmente chuta a barraca e executa, afinal você escreveu "FAÇA
ISSO"!
Se quiser voltar para um outro comportamento vc pode trocar para um eval {},
ou se realmente deseja por um desejo absurdo utilizar o comando "do" vc pode
fazer isto:
perl -E ' +{ do {say "hello"}} while 0'

que poderia ser escrito sem mudar nada assim:
perl -E ' +{ say "hello"} while 0'
lembrando que é necessário colocar +{ pois se não o perl pode acabar
confundido as coisas [só no inline/fora do escopo de outro { } (nao li isso
nem testei..) ]

2011/7/4 Lucas Buchala <lucasbuchala at gmail.com>

> Obrigado pelas respostas. Dei uma lida nas manpages perlsyn e na
> documentação do "do" e agora consigo explicar melhor o motivo da minha
> confusão:
>
> Acho que dá para enxergar a situação de duas maneiras diferentes:
>
> 1) Ou vc encara como se só existisse uma estrutura de controle:
>
>  INSTRUÇÃO while CONDIÇÃO;
>
> que executa *apenas* se a CONDIÇÃO for verdadeira. Com a *exceção*, ou
> caso especial, de que se a INSTRUÇÃO for um "do { ... }" então executa
> pelo menos uma vez independente se a CONDIÇÃO for verdadeira ou não.
>
> 2) Ou vc encara como se existissem duas estruturas de controle *distintas*:
>
>  INSTRUÇÃO while CONDIÇÃO; # que funciona conforme o esperado
>  do { INSTRUÇÕES } while CONDIÇÃO; # que funciona como a linguagem C
> =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
>



-- 
Renato Santos
http://www.renatocron.com/blog/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110704/14650f1c/attachment.html>


More information about the SaoPaulo-pm mailing list