File :: Copy在Windows中的驱动器上移动目录不起作用?

时间:2013-07-13 07:32:17

标签: windows perl filesystems

我有一个相当简单的perl脚本,归结为

use warnings; use strict;

use File::Copy;

#  ... some uninteressing things such as
#      assigning variables etc ...

move($dir_from, $dir_to) or die "could not move $dir_from to $dir_to";  

# ... more uninteresting things ...

如果$dir_1$dir_2位于同一驱动器上,这似乎有效。但是一旦我尝试移动驱动器中的目录,它就无法工作。不幸的是,我在File::Copy的文档中找不到与该问题有关的任何内容。实际上,文档甚至声明了

  

如果可能,move()将只重命名文件。除此以外,   它将文件复制到新位置并删除原始文件。

有人可以确认我的“问题”确实与我的假设有关,还是有其他原因?

1 个答案:

答案 0 :(得分:3)

实际上,File::Copy文档并未说明它能够移动目录。文档只是提到文件。在同一个分区上移动目录"意外地"可行,因为rename()函数(如果源和目标位于同一分区,则优先于复制+删除)适用于文件和目录。

BTW,Unix系统的行为是一样的。

如果您需要一个处理目录的移动,请查看CPAN模块,如File::Copy::RecursiveFile::NCopy