The thought has passed my mind briefly, I think, but I rejected it because I do want to be able to just use MyClass; and automatically have SubClass available.
However, it turns out you're right: if I move use SubClass out of MyClass.pm it just works fine. So I've come up with this workaround:
- Have one wrapper package which loads all classes and subclasses
(so that the script useing MyClass only needs one use statement to have it all)
- Make it so that the wrapper package inherits all methods from the base class
(so that all methods on the base class work when called on the wrapper package)
- Have the base class as before, but without it useing its subclass, and now named 'BaseClass'
- Have the subclass as before, but with extends 'BaseClass' instead.
# MyClass.pm
package MyClass;
use BaseClass; # load the base class
use SubClass; # load the sub class (which now extends BaseClass)
our @ISA = qw(BaseClass); # have all BaseClass methods work on MyClass
1;
# BaseClass.pm
package BaseClass;
use Moose;
sub get_subclass_object {
return SubClass->new;
}
1;
# SubClass.pm
package SubClass;
use Moose;
extends 'BaseClass';
1;
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|