This works; thanks! The 'funky' aspect to which I referred is that when invoked from a script, the module's __FILE__ is 'XML/Foo.pm'. When invoked from the command line:
perl -e "use XML::Foo; $x = new XML::Foo;'
its __FILE__ is reported as '/XML/Foo.pm' -- which is clearly bogus.
It has been suggested that the latter behaviour is due to Red Hat's patches for Fedora Core 8.
Whatever, you've given me the solution. I guess I'll just have to wait and see if it works in all cases, or if there are edge conditions where it goes blooey.