in reply to manipulating call stack

Well.. carp does unintuitive things like that because it's more or less the only way to do it without further information. I can think of two solutions:

1. Try goto &SuperClass::bar; instead - but make sure @_ includes the object/class reference as the first argument. See goto

2. Do eval { $self->SUPER::foo(@_) }; carp $@ if $@

update: it occurs to me that whole idea of carp & croak is wrong and that the only really useful thing to do is to print a complete stack trace (like confess does) - i.e. use Carp 'verbose' in your module.

Replies are listed 'Best First'.
Re^2: manipulating call stack
by perrin (Chancellor) on Nov 07, 2007 at 04:21 UTC
    I actually tried goto first, since it sounded like the right tool for the job, but couldn't get it to work at all. It gave me bizarre errors that I couldn't track down.

    I tried the eval already too, but of course it just gives the same message. I think I could maybe get it to work if I did careful editing of $@, since I think croak is looking at it and seeing a line number already there and that's why it fails.

    The parent class is a CPAN module while I'd prefer not to mess with, except as a last resort.

    I'll try the eval or goto again. Maybe I can get it to work if I persevere. Thanks for the suggestions.