我是Perl的新手。这应该是简单的代码。我想把所有的文件从源文件夹移动到目标文件夹。但这里是困难的部分。如果源文件夹中的数据是重复的,MD5或类似的散列,而不仅仅是名称日期和大小,我希望它从源文件夹中删除。
这是我用来测试的代码。
use File::Copy;
my $sourceFile = "H:\New Folder\TWH.mp4";
my $destinationFolder = "I:\New Folder\TWH.mp4";
my $destinationFile = $destinationFolder . "/" . (split("/", $sourceFile))[-1];
copy($sourceFile, $destinationFile) or die "Copy failed: $!";
if (-e $destinationFile) {
unlink $sourceFile;
}
检查源和目标之间的匹配。如果源和目标除元数据外完全相同,则删除源。否则,复制源,然后从源中删除。
2条答案
按热度按时间csbfibhn1#
\
在双引号字符串常量中有特殊含义,因此需要将其转义。由于在单引号字符串常量中只有
\
和分隔符需要转义,因此也可以使用以下代码:最后,由于Windows接受
\
和/
作为目录分隔符,因此您还可以使用以下命令:8cdiaqws2#
\N{}
序列允许您按名称指定字符:因此,当Perl看到
\N
时,它期望在它后面有大括号和名称:这与正则表达式
\N
不同,后者表示“不是换行符”,因为\n
是换行符。