Chapter 5. Building Blocks
Block
s are the thingys that group multiple statements into a single thingy.
You’ve already used some of them, based on the faith I asked you to have in
the introduction. Now it’s time to look at those more closely. This chapter
covers the basics and works up to simple subroutines. You’ll see just enough
here to get you through the next couple of chapters, then quite a bit more
in Chapter 11.
Blocks
A Block
is a group of statements
surrounded by braces. You’ve already used loop
to repeat a group of statements. You also
used the if-else
structure, which used
a Block
in each branch and executed only
one of them:
loop { ... } if $n %% 2 { put "Even!" } else { put "Odd!" }
A bare block is
one that has nothing around it. It is in sink
context because you do nothing with its result. It provides a
scope and runs once immediately. The result is the last evaluated
expression (not necessarily the last lexical expression) in the Block
. Here’s a simple one that does
nothing:
{ ; }
Note
There’s a bit of discouraged syntax that’s just {}
. It
constructs an empty hash (Chapter 9). With a
statement separator inside the braces the compiler recognizes it as a
Block
.
Here, you can’t tell which expression your program will evaluate
last until the Block
knows what time it is. now
is a term that gives the current time, which you can coerce to an
Int
:
{ now.Int %% 2 ?? 'Even' !! 'Odd' }
Sometimes you’ll get Even
and
sometimes you’ll get Odd
. However, since you do nothing with the result, ...
Get Learning Perl 6 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.