Я использую Perl на Windows (Active Perl).У меня есть Perl-программа для перетаскивания файлов в текущей папке и объединения их всех с помощью команды dos copy, вызываемой изнутри с помощью system () ...
Когда я выполняюсь, это выдает ошибку dos, говорящую «Системане могу найти указанный файл. "Это связано с пробелами в именах файлов, которые у меня есть.
Это код perl: -
@files = glob "*.mp3";
$outfile = 'final.mp3';
$firsttime = 1;
foreach (@files)
{
if($firsttime == 1)
{
@args = ('copy' ,"/b ","$_","+","$outfile", "$outfile");
system (@args);
#system("copy /b '$_'+$outfile $outfile");
$firsttime = 0;
}
else
{
@args = ('copy' ,"/b ","$outfile","+","$_", "$outfile");
system (@args);
#system("copy /b $outfile+'$_' $outfile");
}
}
glob возвращает массив имен файлов в моей текущей папке. Эти имена файлов имеют пробелы вмежду ними, поэтому элементы массива имеют пробелы между ними.Когда я использую систему (...) для выполнения команды копирования этих элементов массива, используя "$ _", как показано выше, выдается ошибка, как указано выше.
Я пробовал несколько способов, которыми я мог бы вызватьсистема (...), но безуспешно.
Я хотел бы знать,
1] Как я могу получить эту работу с файлами, между которыми есть пробелы, используя приведенный выше код,Как «экранировать» пробел в именах файлов.
2] Любое альтернативное решение в Perl для достижения того же.(Простые приветствуются ..)