> 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.

It would be interesting if we could have something like:

sub bar {
  $frame = caller();
  foo($frame);
  ...
}
sub foo {
   ...
   stack($_[0]);  # pop call stack until $_[0] == caller()
   return 0;      # return from bar
}

Then we'd have an interesting, restricted form of continuations to play 
with.

> 
> -Nate

-- 
     Buddha Buck                             [EMAIL PROTECTED]
"Just as the strength of the Internet is chaos, so the strength of our
liberty depends upon the chaos and cacophony of the unfettered speech
the First Amendment protects."  -- A.L.A. v. U.S. Dept. of Justice


Reply via email to