$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).
Also interesting, Ruby copied most of Perl's crazy variables [1].
(I say that as a Perl and Ruby fan)
From the obligatory Yegge rant: https://sites.google.com/site/steveyegge2/tour-de-babel