use strict; use warnings; use Scalar::Util qw/dualvar/; use Hash::Util::FieldHash qw/id id_2obj register/; { package Baz; use Hash::Util::FieldHash qw/register/; sub new { my $class = shift; my $self = bless {}, $class; register $self; $self } sub test { 'In object Baz'; } } my $b = Baz->new; my $x = dualvar( id( $b ), 'Baz says Hi' ); print "$x - ", (id_2obj($x+0))->test(),"\n";