Provided by: libperl-critic-perl_1.152-1_all bug

NAME

       Perl::Critic::Policy::InputOutput::ProhibitBacktickOperators - Discourage stuff like "@files = `ls
       $directory`".

AFFILIATION

       This Policy is part of the core Perl::Critic distribution.

DESCRIPTION

       Backticks are super-convenient, especially for CGI programs, but I find that they make a lot of noise by
       filling up STDERR with messages when they fail.  I think its better to use IPC::Open3 to trap all the
       output and let the application decide what to do with it.

           use IPC::Open3 'open3';
           $SIG{CHLD} = 'IGNORE';

           @output = `some_command`;                      #not ok

           my ($writer, $reader, $err);
           open3($writer, $reader, $err, 'some_command'); #ok;
           @output = <$reader>;  #Output here
           @errors = <$err>;     #Errors here, instead of the console

CONFIGURATION

       Alternatively, if you do want to use backticks, you can restrict checks to void contexts by adding the
       following to your .perlcriticrc file:

           [InputOutput::ProhibitBacktickOperators]
           only_in_void_context = 1

       The purpose of backticks is to capture the output of an external command.  Use of them in a void context
       is likely a bug.  If the output isn't actually required, "system()" should be used.  Otherwise assign the
       result to a variable.

           `some_command`;                      #not ok
           $output = `some_command`;            #ok
           @output = `some_command`;            #ok

NOTES

       This policy also prohibits the generalized form of backticks seen as "qx{}".

       See perlipc for more discussion on using "wait()" instead of "$SIG{CHLD} = 'IGNORE'".

       You might consider using the "capture()" function from the IPC::System::Simple module for a safer way of
       doing what backticks do, especially on Windows.  The module also has a safe wrapper around "system()".

AUTHOR

       Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>

COPYRIGHT

       Copyright (c) 2005-2011 Imaginative Software Systems.  All rights reserved.

       This program is free software; you can redistribute it and/or modify it under the same terms as Perl
       itself.  The full text of this license can be found in the LICENSE file included with this module.

perl v5.36.0                                   Perl::Critic::Policy::InputOutput::ProhibitBacktickOperators(3pm)