2015-11-02 2 views
0

У меня проблема с копированием/перемещением файлов с помощью perl. Я хочу переместить каталог с подкаталогами в другой каталог. Оба приведены в абсолютных путях.
Что я делаю:Копирование/перемещение файлов с perl

system("mv $source $destination") 

где $source и $destination мои папки источника и назначения.

Я также пробовал с:

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

и со всеми возможными вариантами, но каждый раз, когда я пытаюсь это дает мне следующий вывод:

sh: line 1: $destination: is a directory 

где $destination это мой путь назначения.

Что я делаю неправильно?

+0

Вы даете мв и/или cp command (s) неправильные аргументы. Это никоим образом не проблема Perl. –

+0

Я подозреваю, что ваш '$ source' - это каталог или файл? –

+0

: $ '$ source' и ' $ destination' - это папка в формате «Пользователь/Рабочий стол/некоторая папка/ Итак, каковы были бы правильные аргументы? Я пытался читать переменные с помощью print(), и это дает право output – Darius

ответ

4

Вместо выполнения

cp -r source destination 

Вы выполняете

cp -r source 
destination 

$source по-видимому, содержит символ новой строки. Добавление chomp($source);, вероятно, является правильным исправлением.


Кстати, вы не строите команду оболочки правильно. Вы должны использовать следующее:

use String::ShellQuote qw(shell_quote); 

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

Тем не менее, нет никаких оснований предполагать оболочку на всех, так что вы должны использовать следующее:

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

 Смежные вопросы

  • Нет связанных вопросов^_^