SPUG: interesting while() behavior and hosting recs

John W. Krahn krahnj at telus.net
Sun Oct 3 05:58:00 CDT 2004

Joel Grow wrote:
> John pointed out:
>  That is working for the same reason that
>  for ( ;; ) { ... }
>  works in Perl as well as in C where Perl inherited it from.
> I guess that's a good enough explanation, but it still seems to me like
>  while () {
>  }
> should intuitively evaluate to false.  I'll get over it.  Or at least
> memorize it.
> Btw, if you really want to use while() without the parens, you could do:
>  do {
>     print "hello world\n";
>  } while $x++ < 3;
> # not to my tastes, but tmtowtdi...

You could but it has two differences from "while (EXPR) {CODE BLOCK}".  The 
first is that the code block executes first before the expr is evaluated (just 
like in C) and second is that using do {} means that the keywords 'next', 
'last' and 'redo' won't work without adding another pair of braces to create a 
loop.  If you have a single statement like your example then you could just 
use 'print "hello world\n" while $x++ < 3;'

use Perl;

More information about the spug-list mailing list