【发布时间】:2014-11-20 02:10:21
【问题描述】:
我有以下代码:
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("..");
}
但是,第一个文件被一遍又一遍地读取......就像一个无限循环,我不知道为什么它永远不会完成读取同一个文件。你有什么想法吗?
【问题讨论】:
-
您是否尝试过注释掉某些代码行以查看问题所在?如果您发现是哪条线路导致了问题,您是否阅读过为什么它可能会导致无限循环?
-
跟踪你的各种文件名,从
ls打印出列表,打开哪个目录等等。