あなたがする
print 'find $input_dir -name "*.fastq.gz" -print';
た場合は、問題が顕在化しなければならない:シングル引用符補間しないでください。あなたはおそらく意味する
open(my $cmd_fh, '-|', qq{find $input_dir -name "*.fastq.gz" -print}) or die $!;
しかし、それもバグです。 $input_dir
をシェルリテラルに変換しません。 2つのソリューションが存在します。
use String::ShellQuote qw(shell_quote);
my $cmd = shell_quote("find", $input_dir, "-name", "*.fastq.gz", "-print");
open(my $cmd_fh, '-|', $cmd) or die $!;
それとも
my @cmd = ("find", $input_dir, "-name", "*.fastq.gz", "-print");
open(my $cmd_fh, '-|', @cmd) or die $!;
あなたはそうです。これをテストしたはずです。私はそれに応じて私の答えを変更しています。 – reinierpost