=begin pod =TITLE class Block class Block is Code { } A C is a code object meant for small-scale code reuse. A block is created syntactically by a list of statements enclosed in curly brackets. Without an explicit signature or placeholder arguments, a block has C<$_> as a positional argument my $block = { uc $_; }; say $block.WHAT; # Block say $block('hello'); # HELLO A block can have a signature between C<< -> >> or C<< <-> >> and the block: my $add = -> $a, $b { $a + $b }; say $add(38, 4); # 42 If the signature is introduced with C<< <-> >>, then the parameters are marked as C by default: my $swap = <-> $a, $b { ($a, $b) = ($b, $a) }; my ($a, $b) = (2, 4); $swap($a, $b); say $a; # 4 Blocks that aren't of type C (which is a subclass of C) are transparent to L. sub f() { say .map: { return 42 }; # ^^^^^^ exits &f, not just the block } Bare blocks in sink context are automatically executed: say 1; { say 2; # executed directly, not a Block object } say 3; =end pod