以下で、Foo::funcとFoo->funcの違いは何ですか?

package Foo;
sub func { print "foo\n" }

package main;
Foo::func;
Foo->func;