Workshop
Quiz
Examine the following block of code:
sub bar {
($a,$b)=@_;
$b=100;
$a=$a+1;
}
sub foo {
my($a)=67;
local($b)=@_;
bar($a, $b);
}
foo(5,10)
1: | After you run bar($a, $b), what is the value in $b?
| 2: | What is the return value from foo()?
| 3: | Inside foo(), how is $b scoped?
|
AnswersA1:
| b. $b is declared with local in foo() so that every called subroutine shares the same value for $b (unless they later declare $b again with local or my). After calling bar(), where $b is modified, $b is set to 100. | A2:
| b. Surprised? The last statement in foo() is bar($a, $b). bar() returns 68 because the value of $a is passed to bar(), and it's incremented. foo() returns the value of the last expression, which is 68. | A3:
| b. Variables declared with local are called dynamically scoped variables. |
Activities
Use the functions from the statistics exercise in this hour and the word-counting code from Hour 7, "Hashes," to examine the length of the words in a document. Compute their mean, median, and standard deviation. Write a function to print part of the Fibonacci series. This series begins 0, 1, 1, 2, 3, 5, 8 and continues forever. The Fibonacci series is a recurring pattern in mathematics and nature. Each successive number is the sum of the previous two (except 0 and 1). These numbers can be computed iteratively or recursively.
|