我有以下代码:无限循环通过FTP读取文件用Perl
use strict;
use warnings;
use Net::FTP;
my $counter;
my $ftp = Net::FTP->new("ftp.metagenomics.anl.gov", Debug => 0)
or die "Cannot connect.\n";
$ftp->login() or die "Login problems.\n";
$ftp->cwd("/projects") or die "Cannot change directory.\n";
for my $directory ($ftp->ls) {
$ftp->cwd($directory);
my ($remote_file_content, $remote_file_handle);
open($remote_file_handle, ">", \$remote_file_content);
$ftp->get("metadata.project-" . $directory . ".json", $remote_file_handle)
or die "Get failed.\n";
while (my $line = $remote_file_content) {
$counter++;
if ($line =~ /"biome":{"unit":"","required":"1","value":"([A-Za-z0-9_\-. ]*)",/) {
print $counter. "\t" . $directory . "\t" . $1 . "\n";
}
}
close $remote_file_content;
$ftp->cwd("..");
}
然而,第一个文件被读一遍又一遍......它就像一个无限循环,我不知道为什么它永远不会完成读取同一个文件。你有什么主意吗?
您是否尝试过注释某些代码行以查看问题所在?如果您发现哪条线路导致问题,您是否做过任何阅读以查看**为什么**可能导致无限循环? – 2014-09-25 10:50:02
跟踪您的各种文件名,从'ls'打印出列表,打开哪个目录等。 – TLP 2014-09-25 10:52:01