/usr/bin/perl use strict; use Scalar::Util qw/weaken isweak/; my $foo = {}; my $bar = returnweak(); print "returnweak isweak - ".(isweak($bar)? "yes":"no")." - '$bar'\n"; weakenbyref(\$bar); print "weakenbyref isweak - ".(isweak($bar)? "yes":"no")." - '$bar'\n"; sub returnweak { my $ret = $foo; weaken($ret); return $ret; } sub weakenbyref { my $arg = shift; weaken($$arg = $foo); return; }