http://www.perlmonks.org?node_id=1041554


in reply to perlsub prototype sub(_) sub foo(_)

From perlsub:

As the last character of a prototype, or just before a semicolon, a @ or a % , you can use _ in place of $ : if this argument is not provided, $_ will be used instead.

So I guess _ being the only character in the prototype, is also the last, and is equivalent to $ there.

Update: I see from the response of Athanasius above that my guess is slightly off. I didn't quite understand what the documentation is saying.