my $returned = some_func($sent); # ... sub some_func { my $received = shift; # ... $value; } #### my $returned = Foo::Bar::some_func($sent); # in Foo::Bar: sub some_func { my $received = shift; #... $value; } #### my $returned = Foo::Bar->some_func($sent); # in Foo::Bar (or any package that Foo::Bar derives from) sub some_func { my $class_name = shift; # will be Foo::Bar, even if we aren't in that package right now my $received = shift; # ... $value } #### my $returend = $obj->some_func($sent); # in the package that $obj is blessed into, or any package it is derived from sub some_func { my $self = shift; my $received = shift; #... $value; }