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;
}Now, take away 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 just executes the body of the loop once, and it’s done.
It’s an un-loop!
You’ll see in a while that there are other uses for the naked block, but one of its features is that it provides 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 just a few lines of code, you can put those lines
into a naked block and declare the variable inside that block. Of
course, if you would need the value of either $n or $root
later, you would need to declare them in a larger scope.
You may have noticed the sqrt function in that
code and wondered about it—yes, it’s a function we haven’t shown before.
Perl has many built-in functions that are beyond the scope of this book.
When you’re ready, check the perlfunc manpage to
learn about more of them.