http://www.perlmonks.org?node_id=769844

KSURi has asked for the wisdom of the Perl Monks concerning the following question:

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?