So you'd rather have $array[i][j-1]? That would mean that whenever you need to copy the expression between inside and outside the square brackets, you'd have to add/remove $. No thanks!
Backwards compatibility for use strict and you DO WANT those my()s.
Sorry? I don't understand what do you want with the reverse. You can write $_ = shift; in main, but as @_ doesn't mean anything there, you get the next from @ARGV ... that is the script's parameters. Makes perfect sense.
I'm inclined to agree here. I'm not so fond of dots though.
You can: $i > 5 or do {print "No"; last}. It's better to use if(){} or unless(){}
Within curlies, if it looks like a word, it's automatically quoted. It simplifies the code. I don't see how the magic of ++ hurts anything. What did you expect to get from $x = "a"; $x++?
The parser is insanely complicated already, besides what would print 1 + foo(1+1)*2; mean then? Should the foo get 2 and then get its result multiplied by two or should the parser wait for the end of block or semicolon and pass 4 to foo? The rule that guides the first distinction is fairly simple ... If a subroutine name is followed by an opening brace, then its parameters end at the matching closing brace. If not THEN the parameters end at the semicolon or end of block. Keep in mind that print is just a function and it does return a value, even if that value is most often ignored. The filehandle stuff ... well, it's a bit tricky, but the rule above still holds. Don't expect special handling for print and you'll be fine.
Jenda Enoch was right!
Enjoy the last years of Rome.