It is true that one way to do something is foreign to Perl culture. It is also true that the best Perl code is pretty unreadable if you expect to read it as a C/C++/Java programmer. Perl is a very different language, and good Perl code reads very differently.
I am not going to get in a language war of Perl vs Java. Both languages have their places. I prefer Perl on the server. I prefer Java on clients I have no control over because at least I can hope it has a working JVM.
Readable Perl code is just different from Java. Let's take an example:
package Foo;
use Moose;
use PGObject::Util::DBMethod;
with 'PGObject::Simple::Role', 'Baz';
has id => (is => 'ro', isa => 'Int');
has name => (is => 'ro', isa => 'Str');
has description => (is => 'ro', isa => 'Str');
dbmethod int => (funcname => 'foo_to_int');
dbmethod get => (funcname => 'get_foo');
dbmethod save => (funcname => 'save_foo');
There is nothing unreadable about that. It provides a package with declarative specifications for properties and accessors (all of which are read only) and methods which delegate to PostgreSQL stored procedures (more information of which is probably further clarified in the Baz interface.There is nothing inherently unreadable about Perl.
[1]http://ledgersmbdev.blogspot.com/2014/02/in-praise-of-perl-5...