$p->{Vcpeid}{$cpeid} = RepoVData->new() unless blessed $p->{Vcpeid}{$cpeid}; $p->{Vcpeid}{$cpeid}{RepoDB} = RepoDB->new() unless; $p->{Vcpeid}{$cpeid}{RepoDB}->{$nam} = VR->new() #### sub mkBless($;$) { my $targ = shift; if (@_) { ${$targ} = shift unless blessed $targ; } $targ } sub RepoDB($;$) { my $p = shift; my $nam = shift; my $cpeid; die P "RepoDB: can't access Vdata w/o cpeid" unless $cpeid=$p->cpeid and $cpeid =~ /^\d{8}$/; mkBless(\$p->{Vcpeid}{$cpeid}, RepoVData->new); mkBless(\$p->{Vcpeid}{$cpeid}{RepoDB}, RepoDB->new()); mkBless(\$p->{Vcpeid}{$cpeid}{RepoDB}{$nam}, VR->new()); #### sub mkBless($;$) { my $targ = shift; if (@_) { ${$targ} = shift unless blessed $targ; } \$targ } sub RepoDB($;$) { my $p = shift; my $nam = shift; my $cpeid; die P "RepoDB: can't access Vdata w/o cpeid" unless $cpeid=$p->cpeid and $cpeid =~ /^\d{8}$/; my $obj = mkBless(\$p->{Vcpeid}{$cpeid}, RepoVData->new); $obj = mkBless(\$obj->{RepoDB}, RepoDB->new()); $obj = mkBless(\$obj->{$nam}, VR->new()); if (@_) { $$obj = shift; } $obj }