Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Как получить путь на один уровень выше скрипта?


Автор: Suppir 14.4.2011, 14:15
Скрипт лежит в директории C:\Компаратор\Питер\script.pl

Нужно получить путь к папке C:\Компаратор\dumped
Эта папка находится на один уровень "выше" скрипта. 

Пишу:

($waytodump = $0) =~ s/(.+?)[^\\]+\\[^\\]+\.pl/$1\dumped/;

Переменной присваивается верное значение, но выдается предупреждение 
"Unrecognized escape \d passed through"

Как избежать этого предупреждения? (дополнительные модули кроме стандартных не использую).


Автор: arto 14.4.2011, 14:48
это у вас за \d в правой части?

Автор: Suppir 14.4.2011, 15:00
arto, 

имеем строку ($0):

C:\Компаратор\Питер\script.pl

из нее нужно сделать

C:\Компаратор\dumped


Регулярным выражением получаю "C:\Компаратор" и прикрепляю к нему "\dumped".
А Perl думает, что \d - это метасимвол.

Если заэкранировать:
($waytodump = $0) =~ s/(.+?)[^\\]+\\[^\\]+\.pl/$1\\dumped/;

то выдает C:\Компаратор\\dumped
(что неправильно)

Автор: Pfailed 14.4.2011, 15:37
Уберите обрытный слеш в правой части оператора замены, он там не нужен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)