  pp_ctl.c	AOK
 
    Exiting substitution via %s
	$_ = "abc" ;
	while ($i ++ == 0)
	{
    	    s/ab/$(last)/ ;
	}

    Exiting subroutine via %s		
	sub fred { last }
	{ fred() }

    Exiting eval via %s	
	{ eval "last" }

    Exiting pseudo-block via %s 
	@a = (1,2) ; @b = sort { last } @a ;

    Exiting substitution via %s
	$_ = "abc" ;
	last fred:
	while ($i ++ == 0)
	{
    	    s/ab/$(last fred)/ ;
	}


    Exiting subroutine via %s
	sub fred { last joe }
	joe: { fred() }

    Exiting eval via %s
	fred: { eval "last fred" }

    Exiting pseudo-block via %s 
	@a = (1,2) ; fred: @b = sort { last fred } @a ;


    Deep recursion on subroutine \"%s\"
	sub fred
	{
    	  fred() if $a++ +< 200
	}
	 
	fred()

      (in cleanup) foo bar
	package Foo;
	DESTROY { die "foo bar" }
	{ bless \@(), 'Foo' for 1..10 }

__END__
# pp_ctl.c
use warnings 'exiting' ;
$_ = "abc" ;
our $i;
while ($i ++ == 0)
{
    s/ab/$(last)/ ;
}
no warnings 'exiting' ;
while ($i ++ == 0)
{
    s/ab/$(last)/ ;
}
EXPECT
Exiting substitution via last at - line 7 character 9.
########
# pp_ctl.c
use warnings 'exiting' ;
sub fred { last }
do { fred() };
no warnings 'exiting' ;
sub joe { last }
do { joe() };
EXPECT
Exiting subroutine via last at - line 3 character 12.
    main::fred called at - line 4 character 6.
########
# pp_ctl.c
do {
  eval "use warnings 'exiting' ; last;" 
};
print $^STDERR, $^EVAL_ERROR ;
do {
  eval "no warnings 'exiting' ;last;" 
};
print $^STDERR, $^EVAL_ERROR ;
EXPECT
Exiting eval via last at (eval 1) line 1 character 26.
    (eval) called at - line 3 character 3.
########
# pp_ctl.c
use warnings 'exiting' ;
$_ = "abc" ; our $i;
fred: 
while ($i ++ == 0)
{
    s/ab/$(last fred)/ ;
}
no warnings 'exiting' ;
while ($i ++ == 0)
{
    s/ab/$(last fred)/ ;
}
EXPECT
Exiting substitution via last at - line 7 character 9.
########
# pp_ctl.c
use warnings 'exiting' ;
sub fred { last joe }
joe: do { fred() };
no warnings 'exiting' ;
sub Fred { last Joe }
Joe: do { Fred() };
EXPECT
Exiting subroutine via last at - line 3 character 12.
    main::fred called at - line 4 character 11.
########
# pp_ctl.c
joe:
do { eval "use warnings 'exiting' ; last joe;" };
print $^STDERR, $^EVAL_ERROR ;
Joe:
do { eval "no warnings 'exiting' ; last Joe;" };
print $^STDERR, $^EVAL_ERROR ;
EXPECT
Exiting eval via last at (eval 1) line 1 character 26.
    (eval) called at - line 3 character 6.
########
# pp_ctl.c
use warnings 'recursion' ;
BEGIN { warn "PREFIX\n" ;}
sub fred
{
    fred() if $a++ +< 200
}
 
fred()
EXPECT
 at - line 3 character 9.
    BEGIN called at - line 3 character 1.
Deep recursion on subroutine "main::fred" at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 6 character 5.
    main::fred called at - line 9 character 1.
########
# pp_ctl.c
no warnings 'recursion' ;
BEGIN { warn "PREFIX\n" ;}
sub fred
{
    fred() if $a++ +< 200
}
 
fred()
EXPECT
