=head1 VERSION
-Version 0.06
+Version 0.08
=cut
our $VERSION;
BEGIN {
- $VERSION = '0.06';
+ $VERSION = '0.08';
}
=head1 SYNOPSIS
sub zap {
try {
return @things; # returns to try() and then outside zap()
+ # not reached
}
+ # not reached
}
my @what = zap(); # @what contains @things
=head2 C<reap $callback, $context>
-Add a destructor that calls C<$callback> when the upper scope represented by C<$context> ends.
+Add a destructor that calls C<$callback> (in void context) when the upper scope represented by C<$context> ends.
=head2 C<localize $what, $value, $context>
my $num = sub {
my @a = ('a' .. 'z');
unwind @a => HERE;
+ # not reached
}->();
will set C<$num> to C<'z'>.
my $num = sub {
my @a = ('a' .. 'z');
unwind +(want_at(HERE) ? @a : scalar @a) => HERE;
+ # not reached
}->();
will righteously set C<$num> to C<26>.
=head3 C<SUB $from>
The context of the closest subroutine above C<$from>.
+Note that C<$from> is returned if it is already a subroutine context ; hence C<SUB SUB == SUB>.
=head3 C<EVAL $from>
The context of the closest eval above C<$from>.
+Note that C<$from> is returned if it is already an eval context ; hence C<EVAL EVAL == EVAL>.
=head2 Getting a context from a level