in reply to Golfing password creation

Without changing your algorithm in any way, you can gain a few characters by removing unnecessary quotes, and substituting $o with $_. Since say and length both default to $_ the change of the variable removes four extra characters.
perl -E '@a=(0..9,A..Z,a..z);$_.=$a[rand@a]while 8>length;say'

And here's a completely non-golfed Perl 6 version that's even shorter:

perl6 -e 'say (0..9, "A".."Z", "a".."z").pick(8, :repl)' JIEFoUyiq

On my Linux box this is even shorter:

$ pwgen -s 8 1 mUM6fAiz

But I guess not using Perl in a golfing challenge is cheating ;-)