为什么';这段perl代码在执行期间是否注意到添加到目录中的新文件?
我需要编写一个Perl程序,其中有一堆文件被写入本地磁盘。我必须监视它们,在任何文件不再增加大小后,使用SFTP将其传输到另一个位置 比如说:为什么';这段perl代码在执行期间是否注意到添加到目录中的新文件?,perl,Perl,我需要编写一个Perl程序,其中有一堆文件被写入本地磁盘。我必须监视它们,在任何文件不再增加大小后,使用SFTP将其传输到另一个位置 比如说: 逐个检查要放入文件夹的所有文件 如果文件仍在增长,则移动到下一个文件 若文件不再增长,那个么使用SFTP将其移动到另一个位置 循环回到1号 这就是我在将Win迁移到Linux之前首先尝试在Win中获得工作的原因。问题是,它只运行一次良好,不循环-->如果在运行时添加新文件,这些文件是不可接触的 ` readdir()只遍历使用opendir()调用打开
这就是我在将Win迁移到Linux之前首先尝试在Win中获得工作的原因。问题是,它只运行一次良好,不循环-->如果在运行时添加新文件,这些文件是不可接触的 ` readdir()只遍历使用opendir()调用打开目录时出现的文件。您需要在外部while循环中调用opendir()。下面是一个代码示例:
那么,难道不是一个“为我编写代码”的平台通过向我们展示您为此编写的代码来启动吗?到目前为止,这些文件是如何编写的?另一个系统正在将大型音频和视频文件动态写入文件夹,这些文件需要尽快移动到另一个位置。
while (1) {
while (my $filename = readdir(DIR) ) {
print $filename , "\n";
my $size1 = -s $filename;
print "$size1\n";
sleep 2;
my $size2 = -s $filename;
print "$size2\n";
if ($size1 == $size2) {
move($filename,"c:/temp/perl/out");
}
}
#!/usr/bin/perl
use strict;
use warnings;
while (opendir my $dirh, "/somewhere/else")
{
while (my $file = readdir $dirh)
{
print "$file\n";
}
sleep 1;
}