is $loop, 21, 'yield() exited while';
is_deeply \@res, [ 20, 23 ], 'yield() in while () { ... }';
-{
+SKIP: {
+ skip '"eval { $str =~ s/./die q[foo]/e }" breaks havoc on perl 5.8 and below'
+ => 1 if "$]" < 5.010;
my $s = 'a';
local $@;
eval {
my $err = $@;
my $line = __LINE__-3;
like $err,
- qr/^yield\(\) cannot target a substitution context at \Q$0\E line $line/,
+ qr/^yield\(\) can't target a substitution context at \Q$0\E line $line/,
'yield() cannot exit subst';
}
if "$]" < 5.010;
@res = eval <<'TESTCASE';
+ BEGIN {
+ if ("$]" >= 5.017_011) {
+ require warnings;
+ warnings->unimport('experimental::smartmatch');
+ }
+ }
use feature 'switch';
(24, do {
given (25) {
# end of the enclosing given block.
@res = ();
eval <<'TESTCASE';
+ BEGIN {
+ if ("$]" >= 5.017_011) {
+ require warnings;
+ warnings->unimport('experimental::smartmatch');
+ }
+ }
use feature 'switch';
@res = (28, do {
given (29) {
# But calling yield() in when() in for() sends us at the next iteration.
@res = ();
eval <<'TESTCASE';
+ BEGIN {
+ if ("$]" >= 5.017_011) {
+ require warnings;
+ warnings->unimport('experimental::smartmatch');
+ }
+ }
use feature 'switch';
@res = (31, do {
for (32, 33) {