$0 (along with $1 etc.) is used in shells, at least bash [and original sh?]. I think Perl just borrowed those, like $ prefixes to variables or not offering explicit subroutine arguments, from the traditional unix shell(s).
Linking yegge is quite pointless, since even in that little screed he demonstrates amply how he doesn't even know the basics of Perl and in fact knows so little that his judgement isn't worth the bytes that store it.
From traditional UNIX shells, by way of awk. perl was originally written as a fancier version of awk (to the point that, until recently, it came with a utility "a2p" that translated awk source code to perl), so that's where it got the variables.