Writing my ($self) = @_ is not wrong, but it may mean that the coder - who admits to being a novice - is not sure that he knows what it means.
I find that extremely insulting - it's a long time I've seen such an insult in the Perl community. "Oh, you might write a line of code of which nothing is wrong - but I'll presume you're an idiot and you don't understand your own code." And what makes you think he'll understand your two alternatives? Which you give without explanation? I mean, you're assuming the OP doesn't understand the code he wrote himself, how is he to understand your
The Perl community used to be known for insulting newbies making mistakes, but you're way past that. You're insulting a newbie for writing good code.
Shame on you.