> Hi Dan. > > There's a few things wrong here, and I'm struggling to work out what you're > trying to do. > > Dan Muey wrote: > > > > Yet another module question. > > > > I'm so close and I've done this but I can't get it to work. > > > > I am writing a module that is an extension/sub module of an existing module. > > > > use ... MyNewSexxySubModule qw(function); > > We really need to see what's inside MyNewSexxySubModule.pm. If you're > subclassing Original::Package then it should look something like: > > package MyNewSexxySubModule; > > require Original::Package; > our @ISA = qw(Original::Package); > > is that about right? > > > $obj = new->Original::Package(); > > So then what's this? It looks like you're trying to call the constructor > of the Original::Package class, but it compiles as > > $obj = 'new'->Original::Package; > > which I can't even understand to be valid syntax unless you've also got > a subroutine called 'Package' in package 'Original' :-/ > > my $obj = new Original::Package; > or > my $obj = Original::Package->new; > > but even then you're creating an instance of your base class, not your > new subclass. > > > for(Original::Package::MyNewSexxySubModule::function($obj,$arg)) { .... > > Here's yet another new package name which you haven't mentioned. What's > Original::Package::MyNewSexxySubModule? You also seem to be calling it > with your Original::Package object as its first parameter as if you were > trying to emulate the object method call $obj->function but using a > different class. > > > This works like a charm but what I'd really like to do is this: > > I'm very surprised, but... > > > Use lib '/home/me/modules/'; > > use MyNewSexxySubModule qw(function); # package Original::Package::MyNewSexxySubModule; > > >From this comment it looks like your MyNewSexxySubModule.pm file might look > like > > package Original::Package::MyNewSexxySubModule; > > require Original::Package; > our @ISA = qw(Original::Package); > > The name of the module should always be the same as the class name. > > > $obj = new->Original::Package(); > > for($obj->function($arg)) { .... > > I'm still struggling to see why you're not using your new subclass at all. But > assuming Original::Package::new exists and returns a blessed reference, and > Original::Package::function exists then this should all be OK. > > > When I try that it says: > > Original::Package=GLOB(0x829da00) is an [unexpected] object, aborting at ./ModTest.pl line 21 > > Line 21 is my for($obj->.... > > I haven't the faintest idea what that error message might mean. But it looks like you're > way off beam :) > > > Any ideas what I'm missing ?? > > You've missed showing us where you've screwed up! > > Cheers, >
Thank god Rob wrote this, I thought I had been asleep for about 6 months and there was a whole new way to access into a symbol table looking for a class constructor!! Just throwing in my two cents that I was as confused as Rob :-).... The beginners list just wouldn't be pushed to the edge without you Dan! ;-) http://danconia.org -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]