Подстановка Perl с использованием строки, которая содержит знак доллара на окнах - PullRequest
2 голосов
/ 03 марта 2010

Я использую Perl для Windows и пытаюсь сделать один вкладыш, используя Perl для замены заполнителя в файле, используя переменную Windows, которая содержит знак доллара. Кто-нибудь знает, как правильно использовать его для работы со знаком доллара? Я пробовал разные способы и не могу заставить его работать.

Например, у меня есть файл свойств, в котором есть токен (! MYPASSWORD!), Который я пытаюсь заменить следующим образом:

somevalue="!MYPASSWORD!"

У меня есть пакетный файл, который ищет переменную, называемую NEWPASSWORD, которая содержит пароль $ abc12345 $, и я хочу использовать замену perl для замены значения следующим образом. Обратите внимание, что я не всегда знаю, где находятся знаки $, поэтому я не могу их избежать. Например, другой пароль может быть abc $ 124 $ 563:

echo %NEWPASSWORD%   <-- this would contain $abc12345$
perl -p -i.bak -e "s/!MYPASSWORD!/%NEWPASSWORD%/g" a.properties

Когда это будет сделано, я хочу, чтобы a.properties были:

somevalue="$abc12345$"

Заранее спасибо

Ответы [ 2 ]

13 голосов
/ 03 марта 2010

Используйте ' в качестве символа разделителя регулярных выражений. Это отключит подстановку всех переменных:

perl -p -i.bak -e "s'!MYPASSWORD!'%NEWPASSWORD%'g" a.properties
2 голосов
/ 03 марта 2010

Я предполагаю, что вы получаете пароль от ввода пользователя. почему бы не сделать это в Perl без необходимости проходить через пакет, так как вы уже используете Perl? Это легче. затем вы можете использовать такие модули, как Term :: Inkey , чтобы маскировать пароль и прочее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...