В спецификации воспроизведения нет поля «name». Так что это неправильно:
- name: run playbook locally
hosts: 127.0.0.1
connection: local
become: yes
gather_facts: yes
tasks:
Это должно выглядеть так:
- hosts: 127.0.0.1
connection: local
become: yes
gather_facts: yes
tasks:
Используя оценку может помочь Вам здесь. Смотрите на следующий код, он может предварительно скомпилировать regexp, это готово использоваться последнее:
my $compiled_regexp;
my $regexp = '^\d+$stored_regexp$';
my $stored_regexp = 'a';
eval "\$compiled_regexp = qr/$regexp/;";
print "$compiled_regexp\n";
Оператор qr//может использоваться для предварительной компиляции regexp. Это позволяет Вам создать его, но еще не выполняет его. Можно сначала создать regexps с ним и затем использовать их последний.
Ваши переменные Perl не находятся в объеме в Вашем конфигурационном файле, и я думаю, что это - хорошая вещь. оценка страшна.
Вы были бы более обеспеченной реализацией Вашей собственной шаблонной обработки.
Таким образом в файле конфигурации:
regex = ^\d+__TEMPLATE_FIELD__$
В читателе файла конфигурации:
# something like this for every template field you need
$regex =~ s/__TEMPLATE_FIELD__/$stored_regex/g;
При использовании:
$lValid = ($valuetocheck =~ m/$regex/)
Переместите их в зависимости от в том, какую точку Вы хотите, чтобы шаблонная замена применила.
Можно определить regexp в конфигурационном файле как это:
regex = ^\d+(??{$stored_regex})$
Но необходимо будет отключить проверку защиты в блоке, где Вы используете regexp путем выполнения этого в программе Perl:
use re 'eval';
Проблема, связанная с этим: если вы делаете двойную интерполяцию в строке, а также имеете подстановочные строки в переменных, подумайте:
# the concat with doublequotes in the replacement string
# are to make them PART OF THE STRING, NOT THE STRING DELIMITERS,
# in other words, so the 2nd interpolation sees a double quoted string :
# eval eval $replace -> eval $1 hello world -> syntax error
# eval eval $replace -> eval "$1 hellow world" -> works ok
# see: http://www.perlmonks.org?node_id=687031
if($line =~ s/$search/'"' . $replace . '"'/ee) {
# STUFF...
}