#!/usr/bin/perl use warnings; use strict; { package Myproject::Model::Table; use Moo; has name => (is => 'ro'); has model => (is => 'ro'); } { package Myproject::Model; use Moo; has table => (is => 'rw'); sub newtable { my ($self, $name) = @_; my $tob = 'Myproject::Model::Table'->new( name => $name, model => $self, ); $self->table or $self->table({}); $self->table->{$name} = $tob; } sub DESTROY { print "Good bye\n"; } } my $model = 'Myproject::Model'->new; $model->newtable('t1'); undef $model; # No destructor called here. use Data::Dumper; print Dumper $model; #### has model => (is => 'ro', weak_ref => 1); #### ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,