# a method - get/set the value sub Foo::value () :lvalue { ${$_[0]} } # make three references to two things my ($foo, $bar) = (do { my $v = 1; \$v }) x 2; # 2 refs to same $v my $baz = do { my $v = 1; \$v }; # different $v # . . . and a fourth my $quux = bless $foo, 'Foo'; printf "\$foo\t%s\n\$bar\t%s\n\$baz\t%s\$quux\t%s\n", $foo, $bar, $baz, $quux; print 'value is ', $foo->value(), $/; $bar->value() = 10; print 'now, ', $quux->value(), $/; __END__ $foo Foo=SCALAR(0x80591e8) $bar Foo=SCALAR(0x80591e8) $baz SCALAR(0x8059248) $quux Foo=SCALAR(0x80591e8) value is 1 now, 10