为什么';这段perl代码在执行期间是否注意到添加到目录中的新文件?

为什么';这段perl代码在执行期间是否注意到添加到目录中的新文件?,perl,Perl,我需要编写一个Perl程序,其中有一堆文件被写入本地磁盘。我必须监视它们,在任何文件不再增加大小后,使用SFTP将其传输到另一个位置 比如说: 逐个检查要放入文件夹的所有文件 如果文件仍在增长,则移动到下一个文件 若文件不再增长,那个么使用SFTP将其移动到另一个位置 循环回到1号 这就是我在将Win迁移到Linux之前首先尝试在Win中获得工作的原因。问题是,它只运行一次良好,不循环-->如果在运行时添加新文件,这些文件是不可接触的 ` readdir()只遍历使用opendir()调用打开

我需要编写一个Perl程序,其中有一堆文件被写入本地磁盘。我必须监视它们,在任何文件不再增加大小后,使用SFTP将其传输到另一个位置

比如说:

  • 逐个检查要放入文件夹的所有文件

  • 如果文件仍在增长,则移动到下一个文件

  • 若文件不再增长,那个么使用SFTP将其移动到另一个位置

  • 循环回到1号


  • 这就是我在将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;
    }