use strict; use warnings; use Data::Dumper; use Scalar::Util; use base 'Attribute::MemoizeToConstant'; # use Attribute::MemoizeToConstant; my $ref = { 'x' => "hello\n" }; BEGIN { our $foo = 8549; } sub foo : MemoizeToConstant { print "foo runs\n"; return $ref->{'x'}; } print Dumper($Attribute::MemoizeToConstant::c); print "ref ",$ref->{'x'}; print Dumper($ref); print "foo() ",foo(),"\n"; print Dumper($ref); Scalar::Util::weaken ($ref); print Dumper($ref); print "foo() ",foo(),"\n"; print Dumper($ref); # print Dumper($Attribute::MemoizeToConstant::c); # use Devel::FindRef; # print Devel::FindRef::track($Attribute::MemoizeToConstant::c); use lib '.'; require 'memoize-2.pl'; print "bar() ",xyz::bar(),"\n"; print "bar() ",xyz::bar(),"\n"; print "bar() ",xyz::bar(),"\n";