2015-11-02 115 views
0

我用perl複製/移動文件有問題。 我想將包含子目錄的目錄移動到其他目錄中。兩者都以絕對路徑給出。
我要做的就是:用perl複製/移動文件

system("mv $source $destination") 

其中$source$destination是我的源和目標文件夾。

我也試了一下:

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

,並與所有可能的選擇,但每次我嘗試它的時候給了我下面的輸出:

sh: line 1: $destination: is a directory 

其中$destination是我的目標路徑。

我在做什麼錯?

+0

你給的MV和/或cp命令(s)錯誤的參數。這絕不是Perl的問題。 –

+0

我懷疑你的'$ source'是它的目錄還是文件? –

+0

both '$ source' and '$ destination'是格式爲「User/Desktop/somefolder/ 」的文件夾那麼什麼是正確的參數呢?我試着用print()讀取變量,它給出了正確的輸出 – Darius

回答

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); 

這就是說,我們沒有理由在所有涉及的外殼,所以你應該使用下列內容:

system("cp", "-r", "--", $source, $destination) 
相關問題