They aren't bugs in the language they are design decisions made in very early versions of the language, back when it was basically just a combination of sed awk sh and C.
None of those languages has lists of lists, not like modern languages anyway.
It wasn't until Perl 5 that arrays of arrays without using symbolic references was possible, and that came out before the first version of Java in 1994 (It had features even back then that Java didn't, like closures and lambdas).
I find it amazing just how capable it can be and still maintain over 90% compatibility all the way back to Perl 1 from 1987.
I mean there is probably a bigger difference between Perl 5 of 10 years ago, and that of today, than between Python 2&3, but upgrading Perl isn't that big of a deal.
As to calling subroutines or methods inside of a key value argument list, I thought everybody knew that you have to either put scalar in front of it, or do something else to make sure it doesn't clobber the rest of your arguments, like put it in an anonymous array ref.
Also any argument about Perl 5 coming from someone who thinks that @list is a list should be taken with a grain of salt.
I mean I think that was literally the only time I have ever seen a Perl 5 array named @list. ( other than right here of course )