use strict;
use warnings;
use v5.10;
our $_cached;
sub somefunc
{
$_cached //= do {
say "Heavy calculations";
42+($ARGV[0]||0);
};
}
say somefunc();
say somefunc();
__END__
Heavy calculations
42
42
####
use strict;
use warnings;
use v5.10;
sub somefunc
{
state $var = do {
say "Heavy calculations";
42+($ARGV[0]||0);
};
}
say somefunc();
say somefunc();
__END__
Heavy calculations
42
42
####
{
local $_cached = undef;
local @ARGV = (3);
say somefunc();
}
{
local $_cached = undef;
local @ARGV = (5);
say somefunc();
}