package Employee; use strict; { my %dept_id; my %emp_id; my %name; my %salary; sub new { bless {}, shift } sub dept_id :lvalue { $dept_id{+shift} } sub emp_id :lvalue { $emp_id{+shift} } sub name :lvalue { $name{+shift} } sub salary :lvalue { $salary{+shift} } sub DESTROY { my $sref = 0+shift; delete $dept_id{$sref} ,$emp_id{$sref} ,$name{$sref} ,$salary{$sref}; } } 1; package Department; use strict; { my %dept_id; my %name; sub new { bless {}, shift } sub dept_id :lvalue { $dept_id{+shift} } sub name :lvalue { $name{+shift} } sub DESTROY { my $sref = 0+shift; delete $dept_id{$sref} ,$name{$sref}; } } 1;