Я думаю, что моя проблема очень похожа на эту: Как использовать переменную в замещающей части оператора подстановки 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 и программировании в целом.)