我有以下"系统命令"来移动文件.使用File::Move命令或使用下面的命令是否好.如果File::Move更好,我该如何使用它?
system("mv $LOGPATH/test/work/LOGFILE $LOGPATH/test/done/$LOGFILE") == 0
or WriteLog(ERROR, "mv command Failed $LOGPATH/test/work/$LOGFILE status was $?");
Run Code Online (Sandbox Code Playgroud)
小智 16
您正在寻找的功能是在File :: Copy中:
use File::Copy 'move';
move $x, $y or WriteLog ("move $x, $y failed: $!");
Run Code Online (Sandbox Code Playgroud)
File :: Copy是Perl自身标准发行版的一部分.
你当然可以使用system ("mv ...")命令来做同样的事情.File :: Copy的优点是:
/Library/Application Support/Hi I'm On A Mac/;system其他一切沼泽的成本.File::Copy::move并且rename具有相同的成本,因此您可以使用move跨文件系统工作的更安全.这里还有一件事要添加到混合中 - 如果你在同一个设备中移动文件(也就是说,不需要移动文件内容,只更新其目录条目),你可以简单地使用内置函数 重命名:
重命名OLDNAME,NEWNAME
更改文件的名称; 现有文件NEWNAME将被破坏.成功时返回true,否则返回false.
此功能的行为根据您的系统实施而有很大差异.例如,它通常不能跨文件系统边界工作,即使系统mv命令有时会补偿这一点.其他限制包括它是否适用于目录,打开文件或预先存在的文件.有关详细信息,请检查perlport以及rename(2)联机帮助页或等效的系统文档.
对于独立于平台的"移动"功能,请 查看File :: Copy模块.