Class-InsideOut
view release on metacpan or search on metacpan
lib/Class/InsideOut.pm view on Meta::CPAN
# assemble references to all properties for all classes
my @properties = map { values %$_ } values %PROP_DATA_FOR;
for my $old_id ( keys %OBJECT_REGISTRY ) {
# retrieve the new object and id
my $object = $OBJECT_REGISTRY{ $old_id };
my $new_id = refaddr $object;
# for all properties, relocate data to the new id if
# the property has data under the old id
for my $prop ( @properties ) {
next unless exists $prop->{ $old_id };
$prop->{ $new_id } = $prop->{ $old_id };
delete $prop->{ $old_id };
}
# update the registry to the new, cloned object
weaken ( $OBJECT_REGISTRY{ $new_id } = $object );
_deregister( $old_id );
( run in 1.264 second using v1.01-cache-2.11-cpan-71847e10f99 )