It's really hard to write unreadable crap in Java. Even if you do, there's automated refactoring to fix it. That's the thing about Java. It makes it really hard for clever bad programmers to do a lot of damage to a project. With Perl the sky's the limit.
>>It's really hard to write unreadable crap in Java.
I work on legacy Java code bases every day, where I see thousands of lines of code all to just simply set and read variables.
I'm not sure how that's even remotely described as readable.
It's readable and easily followed spaghetti code it just obscures what the programs means with unnecessary details.
People say the same about Python, but it is completely possible. Deeply nested hashes with no comments explaining the structure. Variable names such as 'Indexes' and 'indexes' in the same function. I have had to rewrite code like that.
The argument for Java is that there is a wide developer base, and lots of libraries. Perl, with appropriate frameworks, can be remarkably typesafe too (see Moose, etc). It's still loosely typed under the surface, but you have good error handling of invalid type syntaxes as long as you don't break encapsulation.
The big things I am looking at though are:
1. Maintenance and testing.
2. Readability
You can write unreadable crap in any language. What Perl excels at is allowing you to improve readability and maintenance/testing by building mini-dsl's in your framework which reduce testing footprints.