小编swo*_*oxo的帖子

如何在不对持续时间进行硬编码的情况下暂停Perl处理?

我有一个包含此代码片段的Perl脚本,它调用系统shell以通过SFTP获取一些文件并使用WinZip解压缩它们:

#  Run script to get files from remote server
system "exec_SFTP.vbs";

#  Unzip any files that were retrieved
foreach $zipFile (<*.zip>) {
    system "wzunzip $zipFile";
}
Run Code Online (Sandbox Code Playgroud)

即使检索到某些文件,它们也永远不会被解压缩,因为在检索文件并关闭SFTP连接时,Perl脚本已经完成了解压缩步骤,结果是找不到要解压缩的内容.

我的短期修复是插入

sleep(60);
Run Code Online (Sandbox Code Playgroud)

在解压缩步骤之前,但假设SFTP连接将在60秒内完成,这有时可能是总估计过高,有时则是低估.

在继续解压缩步骤之前,是否有更合理的方法使Perl暂停直到SFTP连接关闭?

编辑:响应者质疑(并且合理地)使用VB脚本而不是让Perl进行文件传输.它与安全性有关 - VB脚本由其他人维护,并有权执行SFTP.

perl duration dynamic

1
推荐指数
2
解决办法
3382
查看次数

标签 统计

duration ×1

dynamic ×1

perl ×1