package MyPackage; sub foo() { print 'stuff'; } 1; MyPackage::foo(); MyPackage->foo(); #### package MyPackage; sub foo() { my $self = shift; my $text; if (ref($self) eq __PACKAGE__) { $text = shift; } else { $text = $self; }; print $text; }; 1; MyPackage::foo('stuff'); MyPackage->foo('stuff');