Not an especially useful technique for managing inside-out objects. (Not without some care anyway.) Reference addresses can be recycled.
use strict;
use warnings;
use Scalar::Util 'refaddr';
use Data::Dumper;
for my $i (0..2)
{
my $hash = [$i];
printf "The hash has refaddr %08X, and contents are...\n", refaddr
+($hash);
print Data::Dumper->Dump([$hash], ['$hash']);
}
With carefully written CLONE and DESTROY methods, using the refaddr as a hash key can be made to work, but something like Hash::FieldHash saves a lot of work.
use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name
|