use v5.14; my $foo = 40; sub foo { return(2 + $foo); } #### use v5.14; sub get_counter { my ($count) = @_; my $closure = sub { $count++ }; return $closure; } my $counter = get_counter(40); my $other = get_counter(99); say $counter->(); say $other->(); say $counter->(); say $other->(); say $counter->(); #### use v5.14; use Scalar::Util qw/refaddr/; my @closures; my @nonclosures; for my $i (qw/ a b c /) { push @closures, sub { $i }; push @nonclosures, sub { 42 }; } say join "|" => map refaddr($_), @closures; say join "|" => map refaddr($_), @nonclosures;