perl - 'mv' 系统命令的 Perl 等价物是什么?

我有以下用于移动文件的“系统命令”。使用 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 $?");

最佳答案

您要查找的函数在 File::Copy:

use File::Copy 'move';
move $x, $y or WriteLog ("move $x, $y failed: $!");

File::Copy 是 Perl 本身标准发行版的一部分。

您当然可以使用 system ("mv ...") 命令来做同样的事情。 File::Copy 的优点是:

  • 它将适用于不同的操作系统,如果您正在编写供其他人使用的内容,这可能是必要的;
  • 它不会因为将数据传递给 shell 而使您面临安全漏洞,也不会因为文件路径中包含元字符和空格而导致可移植性错误,例如 /Library/Application Support/Hi I'm On A Mac/;
  • 速度更快:参见 Schwern's paste . 系统 的成本淹没了其他一切。 File::Copy::moverename 的成本大致相同,因此您不妨使用更安全的跨文件系统的 move

关于perl - 'mv' 系统命令的 Perl 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3191363/

相关文章:

python - python中的快速过滤方法

email - 为什么 CR 和 LF 在电子邮件中一起出现如此重要?

iphone - 检测 UITableView 中的触摸和按住

csv - 如何将密码和登录数据导入 firefox?

PHP 错误 : Warning: Cannot modify header information

c# - 如何使用 C# 将字符串中的 "http:"替换为 "https:"?

php - 我可以获取最初在包含文件中调用的 PHP 文件的路径吗?

java - 如何重写输入循环以不包含代码重复?

c++ - assert 语句在 C++ 中不起作用

c# - 获取图标 128*128 文件类型 C#