Используйте LWP для просмотра FTP. Здесь нет гиперссылок, поэтому вам нужно проанализировать список, чтобы отличить файлы, которые вы хотите отразить. Шарики оболочки типа *
не работают, но регулярные выражения подходят.
Не проверенный пример: сбор всех bam
URI из указанного каталога.
use File::Listing qw(parse_dir);
use LWP::UserAgent qw();
my @bam_files;
my $base = 'ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/data/HG00132/alignment/';
my $ua = LWP::UserAgent->new;
my $index = $ua->get($base);
for my $entry (parse_dir $index->decoded_content) {
my $filename = $entry->[0];
next unless $filename =~ /bam$/;
push @bam_files, $base . $filename;
}
Невозможно использовать файл FTP без его предварительной загрузки (см. метод get
в LWP :: UserAgent ). Это не означает сохранение его также в локальной файловой системе (это будет метод mirror
).
samtools также должен делать это негласно, возможно, используя расширения протокола для загрузки только диапазонов, а не полного файла.