use strict;
use warnings;
use feature "say";
#no warnings 'redefine';
sub tst {1}
BEGIN { $a = \&tst }
sub tst {2}
BEGIN { $b = \&tst }
say &$a;
say &$b;
####
perl false_postive_redefine.pl
Subroutine tst redefined at false_postive_redefine.pl line 7.
1
2
####
use feature "try";
use constant CHECK_HINTHASH => 0;
sub check_hinthash {warn "feature_try = ".$^H{feature_try} if CHECK_HINTHASH}
#...
BEGIN { check_hinthash() } # feature enabled
{
no feature qw( try );
BEGIN { check_hinthash() } # feature disabled
use Try::Tiny qw( try catch );
try { ... };
}
BEGIN { check_hinthash() } # feature enabled
# try { ... }; <-- would fail