Book HomeLearning Perl, 3rd EditionSearch this book

10.4. 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!

We'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 we would need the value of either $n or $root later, we 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 builtin functions that are beyond the scope of this book. When you're ready, check the perlfunc manpage to learn about more of them.



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.