---
name: "Perl::Critic::Policy::Community::PreferredAlternatives"
section: "3pm"
platform: "linux"
package: "libperl-critic-community-perl"
version: "1.0.4-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Perl::Critic::Policy::Community::PreferredAlternatives"
---

# Perl::Critic::Policy::Community::PreferredAlternatives(3pm)

Various modules with preferred alternatives

## NAME

Perl::Critic::Policy::Community::PreferredAlternatives - Various modules with preferred alternatives

## DESCRIPTION

Various modules have alternatives that are preferred by some subsets of the community, for various reasons which may include: buggy behavior, cruft, performance problems, maintainer issues, or simply better modern replacements. This is a low severity complement to Perl::Critic::Policy::Community::DiscouragedModules.

## MODULES

### Getopt::Std

Getopt::Std was the original very simplistic command-line option processing module. It is now obsoleted by the much more complete solution Getopt::Long, which also supports short options, and is wrapped by modules such as Getopt::Long::Descriptive and Getopt::Long::Modern for simpler usage.

### JSON

JSON.pm is old and full of slow logic. Use JSON::MaybeXS instead, it is a drop-in replacement in most cases.

### List::MoreUtils

List::MoreUtils is a far more complex distribution than it needs to be. Use List::SomeUtils instead, or see List::Util or List::UtilsBy for alternatives.

### Mouse

Mouse was created to be a faster version of Moose, a niche that has since been better filled by Moo. Use Moo instead.

### Readonly

Readonly.pm is buggy and slow. Use Const::Fast or ReadonlyX instead, or the core pragma constant.

## AFFILIATION

This policy is part of Perl::Critic::Community.

## CONFIGURATION

Occasionally you may find yourself needing to use one of these non-preferred modules, and do not want the warnings.  You can do so by putting something like the following in a *.perlcriticrc* file like this:

```
    [Community::PreferredAlternatives]
    allowed_modules = Getopt::Std JSON
```

The same option is offered for Perl::Critic::Policy::Community::DiscouragedModules.

## AUTHOR

Dan Book, `"dbook@cpan.org"`

## COPYRIGHT AND LICENSE

Copyright 2015, Dan Book.

This library is free software; you may redistribute it and/or modify it under the terms of the Artistic License version 2.0.

## SEE ALSO

Perl::Critic
