I mean look at this : -
and compare it with this :-
FileInputStream inStream = new FileInputStream( args );
inStream = ("myFile.txt");
System.out.println( ioerr.toString() );
open(FH,"myFile.txt") or die "Nope : $!\n";
die "Nope : $!\n" unless open(FH,"myFile.txt");
if (not open FH, 'myFile.txt')
print STDERR "Nope : $!\n";
or even this:
!open FH => 'myFile.txt' == 0 && die "Nope : $!\n";
Every one of those are (probably) valid Perl. And at a glance, they all look like they might kinda work. That's the tradeoff. A diagonal language like Perl, is terse and expressive, not only do you see the same thing done in several ways, you will revel in it. With orthogonal languages like Java, you code may be verbose and ugly, but everyone's code verbose and ugly in the same way, and there is less detective work involved.
It all depends on what you and your task need in a programming language. I like to think of Java as being egalitarian, where everyone writes the same code, and Perl as elitist, where you can soar with the eagles, or crash and burn like a flaming eagle who can't soar anymore.