The only reasonable way of doing loops is to use highly verbose syntax:
--------------------------------------------------------------------------------
#!/usr/bin/perl
# sample while loop
As_Long_As[0] __(*&%$ <boolean expression> $%&*)__
begin_statement_of_syntax
# 7 (spaces required)
while_perchance[0] # statement 1
avoid_exit_if (<condition>) # after every line, add this to decide
# whether you can really get out of the loop
while_perchance[0] # statement 2
avoid_exit_if (<condition>)#
while_perchance[0] # statement 3
avoid_exit_if (<condition>)#
while_perchance[1] # statement 4 wrong! you haven't initialized
# loop 1 yet!
avoid_exit_if (<condition>)#
# you have to have a blank line after every statenent
# also, you have to have a comment after every statement to
# encourage good programming behavior
# nice thing about this is, you don't need semicolons inside
# of loops.
end_statement_of_syntax
this way, you can make a reference to a while loop:
(*&%$loop = while_perchance[0];
(*&%$loop;
(*&%$loop;
(*&%$loop2=(*&%$loop;
--------------------------------------------------------------------------------
Requires only a few short, easy-to-use rules.
With such obvious benefits, why use any other method?