Switch-Back
view release on metacpan or search on metacpan
lib/Switch/Back.pm view on Meta::CPAN
500501502503504505506507508509510511512513514515516517518519520521522523524
$PPR::X::GRAMMAR
}xms;
# Replace each postfix "when"...
for
my
$pos
(
@target_pos
) {
# Unique ID for the "when" (needed by continue())...
state
$ID
;
$ID
++;
# Convert postfix "when" to a postfix "if" (preserving Afterwhen info for continue())...
substr
(
$BLOCK
,
$pos
->{from},
$pos
->{len})
=
"BEGIN { \$^H{'Switch::Back/Afterwhenprev'} = \$^H{'Switch::Back/Afterwhen'};"
.
" \$^H{'Switch::Back/Afterwhen'} = 'Afterpostfixwhen$ID'; }"
.
"$pos->{expr}, break if "
. _apply_when_magic(
$pos
->{mod})
.
";Afterpostfixwhen$ID:"
.
"BEGIN { \$^H{'Switch::Back/Afterwhen'} = \$^H{'Switch::Back/Afterwhenprev'}; }"
.
$pos
->{end};
}
return
$BLOCK
;
}
# Change the target expression of a "when" to implement all the magic behaviours...
sub
_apply_when_magic (
$EXPR
) {
# Reduce the expression to what the compiler would see...
$EXPR
= _simplify_expr(
$EXPR
);
( run in 0.471 second using v1.01-cache-2.11-cpan-49f99fa48dc )