我有一个包含此代码片段的 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";
}
即使检索到某些文件,它们也永远不会解压缩,因为在检索文件并关闭 SFTP 连接时,Perl 脚本已经完成了解压缩步骤,结果它找不到任何要解压缩的内容。
我的短期解决办法是插入
sleep(60);
在解压缩步骤之前,但假设 SFTP 连接将在 60 秒内完成,这有时可能会被严重高估,有时可能被低估。
在继续解压缩步骤之前,是否有更合理的方法可以让 Perl 暂停,直到 SFTP 连接关闭?
编辑:响应者质疑(并且合理地如此)使用 VB 脚本而不是让 Perl 进行文件传输。它与安全有关——VB 脚本由其他人维护,并被授权执行 SFTP。