> Add a new special variable, C<@STACK> to replace the C<caller()>
> function. Allow people to modify the call stack in certain, very
> restricted ways.
> Perl 6 => Perl 5
> $STACK[-1] = [caller(0)];
> $STACK[-2] = [caller(1)];
I strongly agree with the opinion that we should try and get away from
special variables and switches in favor of functions and pragmas.
Witness 'use base' instead of '@ISA', 'use warnings', and so on.
Instead of a whole new array, why not just add an additional variable to
caller() that pops off that many stacks permanently?
$pkg = caller(1); # back one stack frame
$pkg = caller(1, 2); # back one stack, "pop" off
# two stack frames also
Or, add a new stack() function that returns an array of the frame(s)
popped off:
@frame = stack; # pop off one frame
stack(2); # pop off two frames
But making a special variable which can only be popped off and breaks
the nice encapsulation of the caller() function? Bleech, honestly.
-Nate