The Naked Block Control Structure
The so-called “naked" block is one without a keyword or condition. That is, suppose you start with a while loop, which looks something like this:
while (condition) {
body;
body;
body;
}Remove the while keyword and the conditional expression, and you’ll have a naked block:
{
body;
body;
body;
}The naked block is like a while or foreach loop, except that it doesn’t loop; it executes the body of the loop once, and it’s done. It’s an un-loop!
You’ll see other uses for the naked block, but one of its features is providing a scope for temporary lexical variables:
{
print "Please enter a number: ";
chomp(my $n = <STDIN>);
my $root = sqrt $n; # calculate the square root
print "The square root of $n is $root.\n";
}In this block, $n and $root are temporary variables scoped to the block. As a general guideline, all variables should be declared in the smallest scope available. If you need a variable for a few lines of code, you can put those lines into a naked block and declare the variable inside that block. If you need the value of $n or $root later, you will need to declare them in a larger scope.
You may have noticed the sqrt function in that code and wondered about it; yes, we haven’t shown this function before. Perl has many built-in functions beyond the scope of this book. When you’re ready, check the perlfunc manpage to learn about more of them.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access