use strict; use warnings; use Net::FTP::Find; use constant NCBI_FTP => "ftp.ncbi.nlm.nih.gov"; use constant BLAST_DB_DIR_VIRUS => "/genomes/Viruses/"; use constant USER => "anonymous"; use constant PASSWORD => "anonymous"; my $ftp; my $ffn_total; $ftp = Net::FTP::Find -> new(NCBI_FTP, Debug => 0) or die "Cannot connect to" . NCBI_FTP . ": $@"; $ftp -> login (USER, PASSWORD) or die "Cannot login to" . NCBI_FTP . ": $@"; $ftp -> cwd (BLAST_DB_DIR_VIRUS); $ftp -> binary(); my @blast_db_files = $ftp->ls(); print "checking the total number of virus files...\n"; $ftp -> find(\&wanted, @blast_db_files); sub wanted { if (/^.*\.ffn\z/s) { print "$_\n"; } }