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
