--- demerphq <[EMAIL PROTECTED]> wrote:
> > The problem is this line in Template::Timer:
> >
> > my $super = __PACKAGE__->can("SUPER::$sub") or die;
> >
> > This is OO code and that should actually read:
> >
> > my $super = __PACKAGE__->can($sub) or die;
>
> Er, i dont see how it could. Then $super would have a reference to
> its own method and not its parents.
I should have posted more context. What's happening is that
Template::Timer inherits from Template::Context and that line merely
checks that two methods which it inherits actually are available. If
they are, it wraps them in timing code. It does *not* implement those
methods directly so it can't have a reference to its own method.
An alternative would be to do search @ISA or refer to the base class
directly:
my $super = Template::Context->can($sub) or die;
That's a bit ugly and not really in the OO spirit, but it also works
around the fact that it doesn't play well with UNIVERSAL::can.
Cheers,
Ovid
--
Buy the book - http://www.oreilly.com/catalog/perlhks/
Perl and CGI - http://users.easystreet.com/ovid/cgi_course/
Personal blog - http://publius-ovidius.livejournal.com/
Tech blog - http://use.perl.org/~Ovid/journal/