0

我需要将具有特定文件名的文件从源文件夹移动到其特定的目标文件夹,然后按字母顺序逐一移动,例如 5 分钟。

这是我到目前为止想出的...

#!/usr/bin/perl
use strict;
use warnings;
my $english = "sourcepath";
my $destination = "destination path";

#for(;;)
#{
opendir(DIR, $english) or die $!;
while (my $file = readdir(DIR))
    {
    next unless (-f "$english/$file");
    next unless ($file =~ m/english/);
    move ("$english/$file", "$destination");
    }
closedir (DIR);
#sleep 10;
#}  
exit 0;

现在的问题是,我无法按字母顺序一个一个地移动它们......任何指针?谢谢

4

2 回答 2

2

如果要按字母顺序处理文件,请将它们排序。要获取他们的列表,您可以readdir在列表上下文中使用:

opendir(DIR, $english) or die $!;
my @files = sort readdir DIR;
for my $file (@files) {
    # ....
}
于 2013-06-14T08:01:40.113 回答
2

代替

while (my $file = readdir(DIR))

您可以按字母顺序获取文件,如下所示:

for my $file (sort readdir(DIR))

竖起大拇指使用strictwarnings。考虑阅读perlstyle有关如何正确格式化代码的提示。

于 2013-06-14T08:01:47.060 回答