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


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


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


       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


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

           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


       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()".


       Jeffrey Ryan Thalhammer <>


       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.28.1                    Perl::Critic::Policy::InputOutput::ProhibitBacktickOperators(3pm)