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;