use strict; use warnings; my $f1 = make_adder( 20); my $f2 = make_adder(555); printf "%d\n", $f1->(10); printf "%d\n", $f2->(10); sub make_adder { my $addpiece = shift; print "\$addpiece = $addpiece\n"; my $inner = sub { return shift() + $addpiece; }; return $inner; }