in reply to Re: Methods supporting both package and OOP style calls
in thread Methods supporting both package and OOP style calls

That is the correct answer, here is the longer version.
Sometimes it feels easier to hack a method to work both ways, but it is Bad(tm). You probably aren't using and data in self if you can call it with & without an instance. This means you should be doing
$answer = Package::foo($ob->member) or $answer = Package::foo('hibill')
If you are doing using something in $self if it is an object, and doing something slightly different if it is being called as a package function, then it isn't the same function. In this case put the common functionality in foo_common() and have two subs - one for instaces and one for class method - that do the slightly different things. This will make the code readable because people can tell they are different without having to know that soemthing in $self is used invisibly.

-jackdied