in reply to Problem emulating use
then a small change to your script to dump out the symbol tables of the subclasses: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;
gives: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::));
You might also consider using Test::Class to manage the growing complexity of your test suite.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; };
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Problem emulating use
by Bloodnok (Vicar) on Jul 12, 2008 at 22:55 UTC |