Dave Mitchell <[EMAIL PROTECTED]> wrote:
:First a bit of background on reification (aka mangling of the English
:language).

Thanks, that was very useful.

:The goal with one of these last two suggestions is to remove the
:difference in behaviour seeen in DB::args depending on whether @_ has been
:reified or not. ie
:
:    @_ = (1,2,3); shift @_; caller(0);
:
:should *always* set @DB::args to either (undef,2,3) or (2,3), but never
:to (1,2,3), regardless fo the reifiedness of @_.

That depends what you mean by 'should' - it is for example very useful
to have confess() show the calls that were made up the call stack.

It is unfortunate that we can't know in advance that the information
will be needed, and preserve the data in such cases. :(

I suspect the best we can actually do is populate @DB::args with
a new special placeholder (which happens to be undef), and let the
consumer decide whether to elide it or not; Carp::longmess() should
probably replace it with '*unknown*' or something.

If I've understood it correctly, the upshot is that the approach used
by Spiffy is unworkable without that bug, and will need to be refactored.

Hugo

Reply via email to