in reply to Redefining methods in non-singletons nearly drove me mad today

No, in Perl 5 named code belongs to a package. When you modify *getName you are writing to shortTest::getName, so all calls to getName now end up at showName2.

If you need this kind of thing though, you could have method dispatch go through anoymous coderefs in instance data. Method calls would need to be spelled differently; like $obj1->{getName}->() . I'm sure there are more clever ways of doing this though.