我在使用perl复制/移动文件时遇到问题。 我想将带有子目录的目录移动到另一个目录中。两者都以绝对路径给出 我所做的是:
system("mv $source $destination")
其中$source
和$destination
是我的源文件夹和目标文件夹。
我也尝试过:
system("cp -r $source $destination")
以及所有可能的选项,但每次尝试时都会给出以下输出:
sh: line 1: $destination: is a directory
$destination
是我的目的地路径。
我做错了什么?
答案 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)