A guess, but -e has to create a script under /tmp/perl$$ or something like that. Are you sure your /tmp is writable, and that there are no scripts left over in there that shouldn't be?
Actually, starting with perl5.005, Perl no longer creates a temporary file in /tmp when -e is used. That behavior was a potential security hole, because another process could mess with the file.
Update: I used this in a trivia question at a Mongers party a couple years ago:
Q. Three diagnostic messages are obsolete in perl5.005. All three
were related to what Perl feature?
A. The -e command line switch. (All three reported errors with the
temp file for -e; in perl5.005 -e no longer creates a temp file.)