use strict; use warnings; sub stringmaker { my( $start, $stringref ) = @_; return sub { $start.$$stringref } } my $r = 300; my $g = stringmaker( 'g', \$r ); print $g->()."\n"; #would be 'g300', that's ok $r = 500; print $g->()."\n"; #would be 'g500'