Thanks for that - I now think I know what the rule is:
<RULE>
If main::foo and CORE::foo both exist, then "foo" calls main::foo if main::foo has been imported in from some module.
Otherwise "foo" calls CORE::foo.
</RULE>
Is that the way it works ?
I'm still a bit puzzled as to why there should be this difference - but if that's the rule, then that's the rule.