Интерпретируйте интерполированную переменную как литеральную строку в Perl regex

Я нашел наконец корректный синтаксис. Если Вы хотите просто заблокировать пользователя, необходимо отредактировать main.cf файл таким образом:

smtpd_sender_restrictions =
 check_sender_access hash:/etc/postfix/access

и в файле доступа:

user@                        REJECT
otheruser@server.example.com REJECT #this will REJECT only if sender is from server.example.com domain
2
26.05.2014, 01:19
1 ответ
[1180658]Да, можно использовать оператор Perl's [1180968]quotemeta[1180969] с одиночными кавычками:

netsh winsock reset
Все, что находится между [1180970]\Q[1180971] и [1180972]\E[1180973] (или до конца регекса, если не поставляется [1180974]\E[1180975]), считается как-нибудь без особого значения, прикрепленного к метасимволам.

Эквивалентно:

Обновление

Вот как это можно сделать [1180978] без [1181290]экспорта

:enter image description here

Обратите внимание, что в вашем коде произошла ошибка. Вы не можете использовать обратную ссылку ([1180980]\1[1180981]) в шаблоне замены [1180982]s///[1180983], вместо этого нужно использовать переменную match ([1180984]$1[1180985]), которую я использовал как [1180986]\$1[1180987] здесь, чтобы избежать интерполяции оболочки [1180988]$1[1180989] из-за мягких кавычек.

В общем, если вы делаете много раскрашиваний с Perl, я бы посоветовал использовать модуль для работы с терминальными идиосинкразиями для вас. Взгляните, например, на [1180990]Term::ANSIColor[1180991][1180671].

3
27.01.2020, 22:06

Теги

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