yes .. with -e you aren't running a program, you're executing a "line" of code, so $0 doesn't really have a value, which makes sense (setting it to 'perl' won't be useful since obviously perl is running). If you save it to a script, it will show that scriptname ..
[me@host]$ echo 'print "$0\n";' > /tmp/p
[me@host]$ perl /tmp/p
/tmp/p
[me@host]$