NAME

Perl6::Overview::Control - Control Structure

DESCRIPTION

Loop Structures

while EXPR { ... }
until EXPR { ... }

loop { ... };
loop ($i = 0; $i < 10; $i++) { ... }

repeat { ... } while EXPR;
repeat { ... } until EXPR;
repeat while EXPR { ... }
repeat until EXPR { ... }

For Loop structures

for @foo { ... }
for @foo -> $x { ... }
for @foo -> $x, $y, $z { ... }
for @foo.kv -> $index, $value { ... }

for %hash.kv -> $key, $value { ... }

for =<> {...} # was while (<>) { ... } in p5

Switch/Case style control elements

given $x { ... }   # $x is now topic for block
when EXPR { ... }  # perform $_ ~~ EXPR execute block and break
default { ... }    # same as when true { ... }    

Closure traits

BEGIN { ... }      # Body executed at compile-time, as soon as possible
CHECK { ... }      # Body executed at compile-time, as last as possible
INIT  { ... }      # Body executed at runtime, as soon as possible
END   { ... }      # Body executed at runtime, as last as possible
START { ... }      # Body only executed once (per clone), inline

sub foo {
  START {
    # Initialize environment, e.g. create some files, etc.
  }

  ...;
}
foo();  # Runs initialization block
foo();  # Does not run initialization block again
foo();  # ditto