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: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a