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 }