Perl Critic を黙らせて、実際にはまったく役に立たないようにするには、コードを次のように変更します。
open(my $PIPE_FROM_FREESPCHK, "-|", $cmdline)
|| zdie($MSG_PASSTHRU, "Error checking free space of file system.");
ただし、これは、はるかに明白な点から、いかなる点でもまったく優れていないことに注意してください。
open(my $PIPE_FROM_FREESPCHK, "$cmdline |")
|| zdie($MSG_PASSTHRU, "Error checking free space of file system.");
exec
直接呼び出すためにトークンを分離していないためです。それは次のようになります。
open(my $PIPE_FROM_FREESPCHK, "-|", $cmd_name, @cmd_args)
|| zdie($MSG_PASSTHRU, "Error checking free space of file system.");
問題は、シェル コマンドを実行しているのか、それとも単に何かを実行しているのかということです。無料チェックが のようなものdf . 2>/dev/null | awk ....
である場合は、完全なシェルが必要です。それがただdf
の場合、そうではありません。