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.

In reply to Re: Problem emulating use by Arunbear
in thread Problem emulating use by Bloodnok

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.