复制文本文件中列出的文件的Perl脚本仅成功复制最后一个文件

时间:2013-06-21 18:38:11

标签: perl file-io copy

我有一个Perl脚本,它从文件accessFiles.txt中读取文件列表,并将它们复制到另一个位置。

open my $accessFiles, "$scriptDir\\accessFiles.txt" or die "Could not open access file list $!";

while (my $accessFile = <$accessFiles>) {
    my($file, $dir, $ext) = fileparse($accessFile, qr/\.[^.]*/);
    my $accessDir = "$localDir\\AccessFiles\\$file";
    my $accessCopy = "$accessDir\\$file$ext";

    system("rmdir","/S", "/Q",$accessDir);
    system("mkdir",$accessDir);
    system("copy", $accessFile, $accessCopy);
}

复制命令的输出表明它为accessFiles.txt中的每个文件复制了一个文件,但只复制了最后一个文件。

我在复制之前和之后添加了输入语句,我无法在任何时间看到复制目录中的任何其他文件。

现在,如果我将脚本更改为从文件数组中读取,那么它可以完美地运行。

my @files = ('\\\\sourceshare\acc1.accdb', '\\\\sourceshare\acc2.accdb');

foreach my $accessFile (@files) {
    my($file, $dir, $ext) = fileparse($accessFile, qr/\.[^.]*/);
    my $accessDir = "$localDir\\AccessFiles\\$file";
    my $accessCopy = "$accessDir\\$file$ext";
    system("rmdir","/S", "/Q",$accessDir);
    system("mkdir",$accessDir);
    system("copy", $accessFile, $accessCopy);
}

提前致谢。

1 个答案:

答案 0 :(得分:3)

您没有删除尾随换行符。添加

chomp($accessFile);