sub somesub {
no warnings 'redefine';
local *ABC::xyz = sub {1};
# several more
# ....
}
####
sub abc { 1 }
for my $method (qw(abc)) {
local *{$method} = sub { 2 };
}
# Prints 1
print abc(), "\n";
if (1) {
local *abc = sub { 3 };
}
# Prints 1
print abc(), "\n";
eval "local \*{'abc'} = sub { 4 };";
# Prints 1
print abc(), "\n";
local *{$_} = sub { 5 } for ("abc");
# Prints 1
print abc(), "\n";
local *abc = sub { 6 } if 1;
# Prints 6
print abc(), "\n";
####
package Anypackage;
sub can_read {
# Some checks here
}
####
sub can_read { 1 }