2015-05-07 2 views
-1

У меня есть старый скрипт CGI, который работает некорректно.Perl - удаление каталога с пробелами

Существует каталог

$dir = "schedule/2015/Some Directory/Some Deeper Directory"; 

Я использую File::Path, я также попытался использовать system("rm", "-rf", $dir); Или remove_tree($dir), но я получил сообщение об ошибке, что каталог не существует, и когда я system("ls -l") каталог находится в списке.

Также я попытался ввести cd intro в некоторый каталог и удалить несколько более глубоких каталогов, но не повезло.

Фактически, когда я запускаю его локально на своем Mac, он работает нормально, но на сервере сжимания Debian он терпит неудачу.

Перл версии 5.010001.

У меня есть не так много информации о сервере и есть только FTP-доступ.

Каковы ваши идеи, что может быть неправильным?

Благодаря

+0

'remove_tree' работает для меня:' dir = "schedule/2015/Some Directory/Some Deeper Directory"; mkdir -p "$ dir" && perl -MFile :: Path = remove_tree -we "remove_tree q {$ dir}" ' – ThisSuitIsBlackNot

ответ

-1

Попробуйте следующее, небольшая модификация вашего примера выше:

system("rm", "-rf", "'$dir'"); 

... до тех пор, пока вы находитесь в правильном каталоге (т.е. в родительском каталоге schedule) , хотя rm -rf всегда опасен ...

+0

Это тоже не работает. не может удалить ./schedules/2015/Some Directory/Some Deerper Directory: Плохой дескриптор файла в строке index.cgi 211. – Douglish

+1

Можете ли вы опубликовать команду, которую вы используете, чтобы создать образец каталога, а затем образец сценария, удали это. Пока все попытки воссоздать проблему потерпели неудачу, поэтому я подозреваю, что в имени каталога есть ошибка, или вы находитесь в неправильном каталоге при запуске скрипта. – TobyLL

+2

Хорошо, все дело в том, что кто-то создал каталог «Некоторая директория», с пространством в конце, и я его не видел. Я заметил это, когда попытался переименовать его. Facepalm. – Douglish

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