|Keep It Simple, Stupid|
With the understanding that this is only my personal opinion, I will attempt to make a reasonable contribution here.
One of my pet peeves is that CPAN authors will sometimes use a feature from a relatively recent version of Perl that is not backwards compatible just because the feature is "cool". One of the worst offenders of this would be the use of the defined/or operator. Yes, saying "//=" is concise and more accurate in many instances, but does it really provide any real advantage over using "||=" in the majority of use cases?
Worse still, IMO, is using Moose (and MooseX) when it is trivial to use traditional OO Perl to do the same thing.
I will be the first to agree that there are many times when using "modern" Perl idioms makes life easier, but that being said, I have found that those occasions are usually in a private environment as opposed to a public environment such as CPAN. I have often argued with myself over this when considering what version of Perl to require for my code that is intended for public consumption.
I respectfully submit that there is a vast difference between requiring a Perl upgrade because of a bug fix and the desire to use a new feature that can already be achieved by an older version, albeit in a more verbose fashion. In fact, I will go so far as to say that some of the more recent "improvements" to Perl encourage "cargo cult" programming in that new programmers adopt the new "standards" without any understanding of why these new features were introduced/requested in the first place. (I am thinking of an instance I had to deal with just yesterday that involved someone defining a new attribute with a builder without thinking about the consequences of not specifying "lazy" as well.)