http://www.perlmonks.org?node_id=576830


in reply to Autocreating Classes

There is not really such thing as creating a package: namespaces are just autovivicated as soon as you assign something to a glob (i.e. create a global, sub, filehandle etc) in that namespace. To nearly all intents and purposes an empty namespace is a non-existing namespace.

Since the only thing you're doing with the created package is setting its inheritance chain in @Package::ISA, you can do that directly:

sub inherit_from_A { my $package_name = shift; no strict 'refs'; @{"${package_name}::ISA"} = qw(A); } # create class B1.. inherit_from_A('B1');