【发布时间】:2011-02-04 22:21:12
【问题描述】:
在我的主脚本中,我正在做一些存档操作。完成后,我想运行一个单独的脚本将我的档案上传到 FTP 服务器。
另外,这些脚本运行良好。我想将 FTP 脚本添加到我的存档脚本的末尾,因此我只需要担心安排一个脚本运行,并且我想保证第一个脚本在调用 FTP 脚本之前完成它的工作。
在查看了调用我的 FTP 脚本的所有不同方法之后,我选择了“do”,但是,当我的 do 语句位于脚本末尾时,它永远不会运行。当我将它放在我的主 foreach 循环中时,它运行良好,但我想避免它运行多次,因为 FTP 脚本可以处理要上传的多个档案。
我有什么遗漏吗?为什么不运行?
这里是相关代码:
chdir $input_dir;
@folder_list = <*>;
foreach $file (@folder_list)
{
if($file =~ m/.*zip/)
{
print "found $file\n";
print "Processing Files...\n";
mkdir 'BuildDir';
$new_archive = Archive::Zip->new();
$archive_name = $file;
$zip = Archive::Zip->new($file);
$zip->extractTree('', $build_dir);
&Process_Files;
}
}
do 'ArchiveToFTPServer.pl';
print "sending files to FTP server";
谢谢
我最终将 FTP 代码作为子文件复制并粘贴到主文件中。当我在 foreach 循环结束时调用它时它工作正常。
【问题讨论】:
-
看不到代码时很难调试。但我猜你在循环结束的上方有一个出口。也许代码太复杂以至于不清楚你是否能正常到达终点?
-
不,我在代码中的任何地方都没有出口。事实上,我在同一个位置放置了一个打印语句并打印出来了。
-
Jeremy - 请提供代码示例(精简版)。