使用perl复制/移动文件

时间:2015-11-02 08:32:37

标签: perl copy move

我在使用perl复制/移动文件时遇到问题。 我想将带有子目录的目录移动到另一个目录中。两者都以绝对路径给出 我所做的是:

system("mv $source $destination")  

其中$source$destination是我的源文件夹和目标文件夹。

我也尝试过:

system("cp -r $source $destination")  

以及所有可能的选项,但每次尝试时都会给出以下输出:

sh: line 1: $destination: is a directory

$destination是我的目的地路径。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

而不是执行

cp -r source destination

您正在执行

cp -r source
destination

$source似乎包含一个尾随换行符。添加chomp($source);可能是正确的修复方法。

顺便说一句,您没有正确构建shell命令。您应该使用以下内容:

use String::ShellQuote qw( shell_quote );

my $shell_cmd = shell_quote("cp", "-r", "--", $source, $destination);
system($shell_cmd);

那就是说,根本没有理由涉及shell,所以你应该使用以下内容:

system("cp", "-r", "--", $source, $destination)