#!/usr/bin/perl
use strict;
sub outer_function {
my ($v1, $v2) = @_;
print STDERR "Outer \$v1: " . \$v1 . " = $v1\n";
return inner_function($v1) . ", $v2";
sub inner_function {
print STDERR "Inner \$v1: " . \$v1 . " = $v1\n";
return $v1;
}
}
print "First call: " . outer_function("A", "B") . "\n";
print "Secnd call: " . outer_function("X", "Y") . "\n";
####
First call: A, B
Secnd call: X, Y
####
Outer $v1: SCALAR(0xa0078a8) = A
Inner $v1: SCALAR(0xa0078a8) = A
First call: A, B
Outer $v1: SCALAR(0x9fee760) = X
Inner $v1: SCALAR(0xa0078a8) = A
Secnd call: A, Y