struct Dlayer => { name => '$', drl_start => '$', drl_end => '$', tool => '%', }; struct Tool => { bit => '$', finish => '$', tol => '$', type => '$', ptholes => '$', count => '$', ar => '%', }; struct AR => { value => '$', ranges => '$', }; sub Dlayer::addtool { my $this = shift; my($s,$bit,$f,$tol,$is_plated,$c,$ar) = @_; my $nt = new Tool; $nt->bit($bit); $nt->finish($f); $nt->tol($tol); $nt->ptholes($is_plated); $nt->count($c); my $h = $this->tool; $h->{$s} = $nt; $this->tool($h); $nt; }