Почему Perl считает, что -1 истинно?

Это фрагмент общего примера кода:

while (1) { 
    print "foo\n"; 
}

, который печатает 'foo' навсегда.

perl foo.pl
foo
foo
foo
...

и

while (0) { print "foo\n"; } 

умирают незаметно, как и следовало ожидать:

perl test.pl

Может кто-нибудь объяснить, почему это полезная реализация while? Это работает по крайней мере на 5.10, Unix и MacOS X:

while (-1) { print "foo\n"; }

, что дает

foo
foo
foo
...
12
задан Jonathan Leffler 4 October 2011 в 05:28
поделиться