Оригинальная запись условия цикла while

Сегодня в группе обсуждения языка The Perl6 Language List (perl6-language@perl.org) проскользнул интересный пример записи условия в операторе while. Если исключить лишнее (в нашем контексте), останется такой простой код:

my $c = 5;
while $c —> 0{
print $c;
}

Запись $c —> 0 напоминает математическое обозначение «$c стремится к нулю». Именно так и ведет себя переменная в этом цикле. На печати появится строка «43210» (начальное значение счетчика здесь отсутствует).

Если поменять местами 0 и $c, изменив направление «стрелки» (while 0 <— $c), счетчик примет значения от 4 до 1. Оператора —> на самом деле не существует. Здесь рядом стоят оператор постдекремента (—) и символ «больше». Иными словами, заголовок цикла эквивалентен следующему:

Замечу, что Perl 5 тоже позволяет проделать такой трюк, но при этом потребуются дополнительные скобки:

my $c = 5;
while ($c —> 0){
print $c;
}
while ($c—) > 5