package AB; sub testing { print $_[0] . ": " . __PACKAGE__ . "\n"; } 1; package CD; sub testing { print $_[0] . ": " . __PACKAGE__ . "\n"; } 1; package main; use strict; use warnings; use 5.014; my $count = 0; foreach ( qw/ AB CD/ ) { no strict 'refs'; &{$_ . '::testing'}($count++); } *testing = \&AB::testing; # redefined warning testing($count++); *testing = \&CD::testing; # redefined warning testing($count++); $::{testing} = \&AB::testing; # redefined warning testing($count++); $main::{testing} = \&CD::testing; # redefined warning testing($count++); $main::{testing} = *AB::testing{CODE}; # redefined warning testing($count++); *testing = *CD::testing; testing($count++); *main::testing = *AB::testing; testing($count++); $main::{testing}= *CD::testing; testing($count++); foreach( qw/AB CD/ ) { no strict 'refs'; *main::testing = *{ $_ . "::testing" }; testing($count++); }