in reply to Problem emulating use

As the subclasses that you're creating don't have any file scoped 'my' variables in them, you could create them with symbolic references instead of eval:
package WTF; use strict; use warnings; use Carp; sub define { my $self = shift; my $type = shift || croak "No type name"; my ($parent, $subclass) = (__PACKAGE__, __PACKAGE__ . "\::$type"); my $new = sub { my $self = shift; bless \( my $scalar ), $subclass; }; { no strict 'refs'; @{"${subclass}::ISA"} = ( $parent ); *{"${subclass}::new"} = $new; } warn "Created type: $type\n"; } sub import { my $self = shift; while (@_) { my ($nm, $list) = splice(@_, 0 ,2); __PACKAGE__->define($nm => $list); } } 1;
then a small change to your script to dump out the symbol tables of the subclasses:
use strict; use warnings; use Data::Dump::Streamer; use lib '.'; # Emulate use BEGIN { require WTF; WTF->import(qw/some/); WTF->import(qw/more/); } Dump(\(%WTF::some::, %WTF::more::));
gives:
Created type: some Created type: more my ($subclass,$subclass_eclipse_1); $subclass = 'WTF::some'; $subclass_eclipse_1 = 'WTF::more'; $HASH1 = { ISA => *WTF::some::ISA, new => *WTF::some::new }; *WTF::some::ISA = [ 'WTF' ]; *WTF::some::new = sub { package WTF; use warnings; use strict 'refs'; my $self = shift @_; bless \my($scalar), $subclass; }; $HASH2 = { ISA => *WTF::more::ISA, new => *WTF::more::new }; *WTF::more::ISA = [ 'WTF' ]; *WTF::more::new = sub { package WTF; use warnings; use strict 'refs'; my $self = shift @_; bless \my($scalar), $subclass_eclipse_1; };
You might also consider using Test::Class to manage the growing complexity of your test suite.

Replies are listed 'Best First'.
Re^2: Problem emulating use
by Bloodnok (Vicar) on Jul 12, 2008 at 22:55 UTC
    Thanx for the tip Arunbear , but, as I hinted in my original posting, I simplified the actual implementation in which I saw the problem - in that, there are in fact (currently) 3 package scoped variables ... love the idea tho'.

    Thanx also for the tip on Test::Class - didn't notice it in the Testers Lab book (chromatic at al)...

    Rgds to all,

    At last, a user level that overstates my experience :-))