2014-02-20 3 views
0

Ниже команды, которую я хочу запустить.с помощью косой черты в команде Perl

perl -pi -w -e 's//apps/LIVE/appl/xx/11.5.0//$XXTOP//g;' prog.txt 

Здесь источник и замена обоих имеют в себе косые черты.

Как с этим справиться?

- Update

Я попытался с помощью фигурных скобок и тильды, что было предложено.

perl -pi -w -e 's{apps/LIVE/appl/xx/11.5.0}{$XXTOP}g;' prog.txt 

В этом случае знак доллара в придании вопрос, иначе она отлично работает ..

Error: 
Name "main::XXTOP" used only once: possible typo at -e line 1. 
Use of uninitialized value at -e line 1, <> chunk 1. 
Use of uninitialized value at -e line 1, <> chunk 2. 

ответ

3

Используйте другой разделитель:

perl -pi -w -e 's~/apps/LIVE/appl/xx/11.5.0/~$XXTOP/~g;' prog.txt 

Вы можете получить доступ к переменной окружения через %ENV, как :

perl -pi -w -e 's~/apps/LIVE/appl/xx/11.5.0/~$ENV{XXTOP}/~g;' prog.txt 
+0

это более читаемо, чем мое. +1. – slayedbylucifer

+0

Ошибка: Имя «main :: XXTOP» используется только один раз: возможная опечатка на -e строке 1. Использование неинициализированного значения на -e строке 1, <> кусок 1. Использование неинициализированного значения на -e строке 1, <> chunk 2. – user1809047

+0

@ user1809047: Посмотрите мои изменения, это то, что вы хотите? – Toto

0

Вы хотите, чтобы текст $XXTOP отображался на выходе. В этом случае избежать $ - {\$XXTOP}

perl -pi -w -e 's{apps/LIVE/appl/xx/11.5.0}{\$XXTOP}g;' prog.txt 

Perl думает, что $XXTOP является переменной Perl.

Из если вы хотите расширить переменную окружения, используйте $ENV{$XXTOP}

0

решена: Решение:

Perl -pi -w -e «s {приложения/LIVE/заявл/хх/11.5. 0} {\ $ XXTOP} г;» prog.txt

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