Hi
Find the right scope and tickle ${^WARNING_BITS}?
$ perl -l
#!/usr/bin/perl --
use strict;
use warnings;
use diagnostics;
sub switch {
no warnings 'exiting';
while (@_) {
my ($case, $action) = splice @_,0,2;
return $action->($case) if $_ ~~ $case;
}
}
no warnings 'exiting';
switch
[1,2,3] => sub { print "bla" ; next},
3 => sub { print "bla2" }
for (3);
use warnings 'exiting';
switch
[1,2,3] => sub { print "bla" ; next},
3 => sub { print "bla2" }
for (3);
use warnings 'exiting';
switch
[1,2,3] => sub { no warnings 'exiting'; print "bla" ; next},
3 => sub { no warnings 'exiting'; print "bla2" }
for (3);
__END__
bla
bla2
bla
Exiting subroutine via next at - line 23 (#1)
(W exiting) You are exiting a subroutine by unconventional means,
+such
as a goto, or a loop control statement.
bla2
bla
bla2