#!/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