in reply to checking a method is not subclassed

I've thinking about this more and I think you're missing something:
package Baz; sub foo { # Do something here ... } package Baz::Ok; use base 'Baz'; sub foo { my $self = shift; # Call parent method first! my $rv = $self->SUPER::foo( @_ ); # Log the call somehow return $rv; }
From the outside world, I didn't override foo(). I just decorated it a little. You might want to think about that.

My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?