NAME
    Perl::Critic::Policy::logicLAB::ProhibitShellDispatch - simple policy
    prohibiting shell dispatching

AFFILIATION
    This policy is a policy in the Perl::Critic::logicLAB distribution.

VERSION
    This documentation describes version 0.03

DESCRIPTION
    Using Perl builtins to dispatch to external shell commands are not
    particularly portable. This policy aims to assist the user in
    identifying these critical spots in the code and exchange these for
    pure-perl solutions and CPAN distributions.

    The policy scans for: system, exec, qx and the use of backticks, some
    basic examples.

        system "touch $0.lock";
    
        exec "touch $0.lock";
    
        my $hostname = qx/hostname/;
    
        my $hostname = `hostname`;

    Instead use the Perl builtins or CPAN distributions. This will make you
    distribution easier to control and easier to distribute across
    platforms.

        #hostname
        use Net::Domain qw(hostname);

    Using CPAN distributions and Perl builtins makes it easier to distribute
    your code and defined you requirements to platforms in your build
    system.

    Additional examples and remedies are most welcome, since I would love to
    write a 101 demonstrating violations and their remedies.

CONFIGURATION AND ENVIRONMENT
    This Policy is not configurable except for the standard options.

DEPENDENCIES AND REQUIREMENTS
    *   Perl version 5.8.0

    *   Perl::Critic

    *   Perl::Critic::Utils

    *   Readonly

    *   Test::More

    *   Test::Perl::Critic

INCOMPATIBILITIES
    This distribution has no known incompatibilities.

BUGS AND LIMITATIONS
    This distribution has no known bugs or limitations.

    As pointed out in bug report RT:91542, some modules and components might
    implement methods/routines holding names similar to the builtins system
    and exec. I had not anticipated this when first implementing the policy
    and there might be some cases where the current implementation does not
    handle these well, please file a bugreport if you run into one of these
    and I will address these.

BUG REPORTING
    Please use Requets Tracker for bug reporting:

        http://rt.cpan.org/NoAuth/Bugs.html?Dist=Perl-Critic-Policy-logicLAB-ProhibitShellDispatch

TEST AND QUALITY
    The following policies have been disabled for this distribution

    *   Perl::Crititc::Policy::ValuesAndExpressions::ProhibitConstantPragma

    *   Perl::Crititc::Policy::NamingConventions::Capitalization

    *   Documentation::RequirePodLinksIncludeText

    See also t/perlcriticrc

  TEST COVERAGE
        ---------------------------- ------ ------ ------ ------ ------ ------ ------
        File                           stmt   bran   cond    sub    pod   time  total
        ---------------------------- ------ ------ ------ ------ ------ ------ ------
        .../ProhibitShellDispatch.pm  100.0   83.3  100.0  100.0  100.0  100.0   98.0
        Total                         100.0   83.3  100.0  100.0  100.0  100.0   98.0
        ---------------------------- ------ ------ ------ ------ ------ ------ ------

SEE ALSO
    *   <http://logiclab.jira.com/wiki/display/PCPLPSD/Home>, project Wiki

AUTHOR
    *   Jonas B. Nielsen, jonasbn "<jonasbn@cpan.org>"

ACKNOWLEDGEMENTS
    *   Johan the Olive, bug reporting on Net::OpenSSH's system (RT:91542)

    *   Adam Kennedy, author of PPI

    *   Jeffrey Ryan Thalhammer, author of Perl::Critic

LICENSE AND COPYRIGHT
    Copyright (c) 2013 Jonas B. Nielsen. All rights reserved.

    This program is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.