in reply to help with versioning modules

Expanding on afoken's explanation:

Your declaration of

use My::Foo 1.0;
is looking for the subroutine My::Foo::VERSION
which does not exist (because your package name is Foo, not My::Foo).

Update: The VERSION subroutine , if absent, is implicitly imported from UNIVERSAL - into your package, which , again, is named "Foo" and not "My::Foo" - hence "My::Foo::VERSION" continues to not exist, whereas Foo::VERSION would exist as a result of "package Foo;".

                "Imaginary friends are a sign of a mental disorder if they cause distress, including antisocial behavior. Religion frequently meets that description"