do {} vai criar um bloco

mais precisamente, fazer, depois testar o resultado.
do {} while no perl é feito para fazer igual Repeat ~  Until do delphi.

Como while não é uma condicional, o comando esta certo!

Eu chamo isso de "bate depois pergunta"
Pois se fosse
while ( 0 ) { do { ... } }  primeiro ia perguntar depois bater!


2011/7/4 Lucas Buchala <[email protected]>

> Eu sempre achei que onde eu tivesse uma única instrução, eu poderia
> substituir a instrução por um bloco "do { ... }" e a lógica ficaria
> sempre a mesma.
>
> Mas agora vi esse exemplo do comportamento bizarro do do-while:
>
> -----------------------------------------------------
> $ perl -E 'say "hello" while 0'
> (Não imprime nada)
>
> $ perl -E 'do { say "hello" } while 0'
> hello
> -----------------------------------------------------
>
> Com uma única instrução, o while (falso) NÃO executa nenhuma vez, o
> que já era esperado.
> Mas com um bloco "do", o while (falso) executa uma vez.
> Qual o "rationale" aqui? Apenas para igualar o comportamento do
> do-while da linguagem C, de executar pelo menos uma vez? Na minha
> opinião, esse design ficou meio inconsistente... :-(
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: [email protected]
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>



-- 
Renato Santos
http://www.renatocron.com/blog/
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a