sub do_something { my ($self, $param); $self = shift if ref $_[0] eq __PACKAGE__; # first argument is object $param = shift; # ...do something... if ($self) { # method ... } else { # function ... } return $param; }