У меня есть подпрограмма, которая находит файлы .vcf в подкаталогах главного каталога, используя File::Find::name
, который прекрасно работал в одной среде, но не работает на другой машине (обе работают под управлением Red Hat Linux).Он по-прежнему находит файлы .vcf, если он находится в главном каталоге, но не может найти его в подкаталоге.Может ли кто-нибудь помочь в устранении неполадок?
Вот пример файла, который он не может найти (разбитые строки для удобства чтения):
/home/yeliiley/mdl3/results/SN1-376-OFA_TL127445_CHIP1_052318_BSN/
MD-18-6297_BG_v1_ac9023be-8db4-440b-9095/Variants/
MD-18-6297_BG_v1_MD-18-6297_BG_RNA_v1/
MD-18-6297_BG_v1_MD-18-6297_BG_RNA_v1_Non-Filtered_2018-05-24_040909.vcf
однако, если файл находится в $main_dir
находит его.
#!/usr/bin/perl
use warnings;
use strict;
use File::Find;
my $main_dir = "/home/yeliiley/mdl3/results/SN1-376-OFA_TL127445_CHIP1_052318_BSN";
my $location=$main_dir;
sub find_vcf {
my $F = $File::Find::name;
if ($F =~ /vcf$/ ) {
print "here is the vcf.$F\n";
$F =~ m|([^/]+).vcf$| or die "Can't extract Sample ID";
my $sample_id = $1; print "the short vcf name is: $sample_id\n";
}else {
print "Did not find any vcf files $F\n";
}
}
find({ wanted => \&find_vcf, no_chdir=>1}, $location);