これが以前の議論ですでに回答されている場合、私はperlにまったく慣れていないのでお詫びします。ループ外で宣言された変数を使用する必要があるスクリプトがありますが、ループ外で変数を宣言したにもかかわらず、1 つのループしか機能していません。コードは次のとおりです。
my $sample;
open(IN, 'ls /*_R1_*.gz |');
while (my $sample = <IN>) {
chomp $sample;
print "sample = $sample\n";
my $fastq1="${sample}"; #need to use fastq1 later on hence it's declared here
my $sample2;
open(IN, 'ls /*_R2_*.gz |');
while (my $sample2 = <IN>) {
chomp $sample2;
print "sample2 = $sample2\n";
my $fastq2="${sample2}"; #need to use fastq2 later on hence it's declared here
}
}
Sample2 は機能しますが、sample1 は機能しません。最初のサンプルのみが出力され、ループは sample2 に進みます。出力は次のようになります。
sample =/sample1_R1_001.fastq.gz
sample2 =/sample1_R2_001.fastq.gz
sample2 =/sample2_R2_001.fastq.gz
sample2 =/sample3_R2_001.fastq.gz
等..
誰でもこれを理解できますか?
ありがとう