focal (3) Perl::Critic::Policy::Freenode::DiscouragedModules.3pm.gz

Provided by: libperl-critic-freenode-perl_0.032-1_all bug

NAME

       Perl::Critic::Policy::Freenode::DiscouragedModules - Various modules discouraged from use

DESCRIPTION

       Various modules are discouraged by the denizens of #perl on Freenode IRC, for various reasons which may
       include: buggy behavior, cruft, performance problems, maintainer issues, or simply better modern
       replacements. This is a high severity complement to
       Perl::Critic::Policy::Freenode::PreferredAlternatives.

MODULES

   AnyEvent
       AnyEvent's author refuses to use public bugtracking and actively breaks interoperability. POE, IO::Async,
       and Mojo::IOLoop are widely used and interoperable async event loops.

   Any::Moose
       Any::Moose is deprecated. Use Moo instead.

   Class::DBI
       Class::DBI is an ancient database ORM <https://en.wikipedia.org/wiki/Object-relational_mapping>
       abstraction layer which is buggy and abandoned. See DBIx::Class for a more modern DBI-based ORM, or
       Mad::Mapper for a Mojolicious-style ORM.

   CGI
       CGI.pm is an ancient module for communicating via the CGI protocol, with tons of bad practices and cruft.
       Use a modern framework such as those based on Plack (Web::Simple, Dancer2, Catalyst) or Mojolicious, they
       can still be served via CGI if you choose.

   Coro
       Coro no longer works on perl 5.22, you need to use the author's forked version of Perl. Avoid at all
       costs.

   Error
       Error.pm is overly magical and discouraged by its maintainers. Try Throwable for exception classes in
       Moo/Moose, or Exception::Class otherwise. Try::Tiny or Try are recommended for the "try"/"catch" syntax.

   FindBin
       FindBin is often used to retrieve the absolute path to the directory containing the initially executed
       script, a mechanism which is not always logically clear. Additionally, it has serious bugs on old Perls
       and can't be updated from CPAN to fix them. The Dir::Self module provides a straightforward "__DIR__"
       constant for the absolute path to the directory containing the current source file. The lib::relative
       module resolves passed relative paths to the current source file for the common case of adding local
       module include directories, and documents an example of achieving the same behavior with core modules.

   File::Slurp
       File::Slurp gets file encodings all wrong, line endings on win32 are messed up, and it was written before
       layers were properly added. Use File::Slurper, "slurp" in Path::Tiny, "slurp" in Data::Munge, or "slurp"
       in Mojo::File.

   HTML::Template
       HTML::Template is an old and buggy module, try Template::Toolkit, HTML::Zoom, or Text::Template instead,
       or HTML::Template::Pro if you must use the same syntax.

   IO::Socket::INET6
       IO::Socket::INET6 is an old attempt at an IPv6 compatible version of IO::Socket::INET, but has numerous
       issues and is discouraged by the maintainer in favor of IO::Socket::IP, which transparently creates IPv4
       and IPv6 sockets.

   JSON::Any
       JSON::Any is deprecated. Use JSON::MaybeXS instead.

   JSON::XS
       JSON::XS's author refuses to use public bugtracking and actively breaks interoperability.
       Cpanel::JSON::XS is a fork with several bugfixes and a more collaborative maintainer. See also
       JSON::MaybeXS.

   Net::IRC
       Net::IRC is an ancient module implementing the IRC protocol. Use a modern event-loop-based module
       instead. Choices are POE::Component::IRC (used for Bot::BasicBot), Net::Async::IRC, and Mojo::IRC.

   Switch
       Switch.pm is a buggy and outdated source filter which can cause any number of strange errors, in addition
       to the problems with smart-matching shared by its replacement, "The 'switch' feature" in feature
       ("given"/"when"). Try Switch::Plain instead.

   XML::Simple
       XML::Simple tries to coerce complex XML documents into perl data structures.  This leads to
       overcomplicated structures and unexpected behavior. Use a proper DOM parser instead like XML::LibXML,
       XML::TreeBuilder, XML::Twig, or Mojo::DOM.

AFFILIATION

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

CONFIGURATION

       This policy is not configurable except for the standard options.

AUTHOR

       Dan Book, "dbook@cpan.org"

       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

perl v5.30.0                                       2019-1Perl::Critic::Policy::Freenode::DiscouragedModules(3pm)