First of all, please note that smartmatching will be deleted or modified in an incompatible manner. This may affect your instructions given.
To use given+ whenwithout warning, you need the following:
use feature qw( switch );
no if $] >= 5.018, warnings => qw( experimental::smartmatch );
experimental .
use experimental qw( switch );
, , , (, , Perl). .
. , , Perl .
, , , $SIG{__WARN__}, .
$SIG{__WARN__} = sub {
warn($_[0]) if $_[0] !~ /^(?:given|when) is experimental at /;
};
(, , $SIG{__WARN__}.)
, , , Perl :
export PERL5OPT=-MMonkey::SilenceSwitchWarning
$ cat Monkey/SilenceSwitchWarning.pm
package Monkey::SilenceSwitchWarning;
use strict;
use warnings;
$SIG{__WARN__} = sub {
warn($_[0]) if $_[0] !~ /^(?:given|when) is experimental at /;
};
1;
$ perl -e 'use v5.10; given (12) { when (12) { print "Hello World\n" }}'
given is experimental at -e line 1.
when is experimental at -e line 1.
Hello World
$ export PERL5OPT=-MMonkey::SilenceSwitchWarning
$ perl -e 'use v5.10; given (12) { when (12) { print "Hello World\n" }}'
Hello World