Задать вопрос
@chelius_ua

Как экранировать в Perl?

Всем привет. Бьюсь с банальным казалось бы вопросом, но победить не могу.
Есть БД ORACLE SQL: xyz
Есть юзер: aa_bb_ccc
Пароль: fd$efghjk_

Есть желание через perl толкать некоторые пакеты вызываемые подобной строкой

sqlplus aa_bb_ccc/fd$efghjk_@xyz @package.sql 201506


Пробую для начала в терминале linux выполнять след. команду:

sqlplus aa_bb_ccc/fd\$efghjk_\@xyz

Коннект к необходимой БД под необходимой схемой происходит. Потом хочу выполнить коннект из perl скрипта строкой

$rc=system ("sqlplus aa_bb_ccc/fd\$efghjk_\@xyz");

Получаю ошибку что не верные учетные данные (насколько понимаю из-за $ в пароле)
В одинарных кавычках все отрабатывает, но не подходят, потому что из приведенного ранее примера 201506 будет браться из переменной.
Подскажите как это реализовать грамотно и не громоздко. Перелопатил все по экранированию спецсимволов, но все испробованные мной вариации безуспешны...
  • Вопрос задан
  • 545 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@hobo-mts
Shortly
Попробуйте
$rc=system("sqlplus", 'aa_bb_ccc/fd$efghjk_@xyz');
По идее тогда не будет и интерполяции переменных, и вызова оболочки для запуска.
См. книгу с верблюдом, с. 875 (3-е изд., 2002 г.). Ну и perldoc.perl.org/functions/system.html
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы