Hello, monks!
There is a simple script:
use Modern::Perl;
my $x = 2.3;
given($x) {
when(int) { say 'match' } # int($_) ~~ $x
default { say 'no match' }
}
It prints 'no match' as expected.
There is also another script with a little difference:
use Modern::Perl;
my $x = 2.3;
given($x) {
when($_) { say 'match' } # $_ ~~ $x
default { say 'no match' }
}
Prints 'match' as expected.
The strangeness is that B::Deparse produces the same output for both scripts:
use Modern::Perl;
use warnings;
use strict 'refs';
BEGIN {
$^H{'feature_say'} = q(1);
$^H{'feature_state'} = q(1);
$^H{'feature_switch'} = q(1);
}
my $x = 2.3;
given ($x) {
when ($_) {
say 'match';
}
default {
say 'no match';
}
}
Why is this so? Is this a bug of B::Deparse?