#!/usr/bin/perl -w use strict; package A; sub A { print "A::A $_[0]\n" } package B; @B::ISA = 'A'; $B::A = "i'm \$B::A\n\n"; package main; A->A; B->A; # calls A::A print $B::A; *{B::A} = sub { print "B::A $_[0]\n" }; # works fine A->A; B->A; # now calls B::A print $B::A; undef &{B::A}; A->A; # Why doesn't it just call A::A here because of inheritance? B->A; # Not a CODE reference at noinherit.pl line 27. print $B::A;