Я думаю, что моя проблема очень похожа на эту: Как использовать переменную на стороне замены оператора подстановки Perl? Разница в том, что $ find и $ replace - это ключи и значенияхеш, который я использую.
while(($find,$replace) = each %hash){
$string_to_check =~ s/$find/$replace/e;
}
Вот пример для одной пары пары ключ-значение в моем хеше
ключ: ^ / abc (/.*)?$
значение: www.abc.website.com $ 1
Я получаю подстановку здесь, но $ 1 не будет заменен содержимым (/.*)
Сs /// ee вместо s /// e, я получаю:
Bareword found where operator expected at (eval 1) line 1, near "//xyz"
(Missing operator before xyz?)
Use of uninitialized value in substitution iterator at ./script line 46, <FH1> line 3470.
... и, следовательно, соответствующие части заменяются пустой строкой.
Я предполагаю,что
while(($find,$replace) = each %hash)
не будет действовать так же, как одиночные кавычки в первом ответе на другой вопрос в теме, с которой я связан:
$replace='"foo $foo bar"';
Это правильно?
Извините за мой английский и заранее спасибо за вашу помощь.(Я новичок в Perl и программировании в целом.)