rename $ARGV[0], $ARGV[1] or warn "rename fails: $!\n";
当我运行./programe file.txt dir/
时,它总是失败。
这里有什么问题?
答案 0 :(得分:7)
从perldoc重命名:
此功能的行为因您而异 系统实施。例如,它通常不起作用 跨文件系统边界,即使系统mv 命令有时会补偿这一点。其他限制 包括它是否适用于目录,打开文件或预先 现有文件。检查perlport和重命名(2) 有关详细信息,请参见联机帮助页或等效系统文档。
对于独立于平台的“移动”功能,请查看 File :: Copy模块。
所以请改用File::Copy::move。
答案 1 :(得分:5)
重命名需要完整的目标路径,而不仅仅是目录。尝试:
./progname file.txt dir/file.txt
如果你告诉它失败的错误会很好......
答案 2 :(得分:4)
rename
更改了文件的名称,这不是您要执行的操作。您可能希望使用File::Copy
move
函数