$Foo::foo->() calls the subroutine reference in $Foo::foo. (i.e, $foo in the Foo package). Assuming $Foo::foo is undefined and you're not running under strict, that would probably refer to the subroutine "" in the calling package (I'm guessing here, since I tend not to run strict-less)
If you want to call Foo::foo() as a class method of Foo, do: