Чтобы $1
имел значение, вам нужно убедиться, что в $param
есть круглые скобки ()
.то есть следующее имеет проблему, аналогичную той, которую вы объясняете.
my $fred = "Fred";
$fred =~ s/red/$1/;
# $fred will now be "F"
Но это работает
my $fred = "Fred";
$fred =~ s/r(ed)/$1/;
# $fred will now be "Fed"
Теперь, если вы хотите использовать $1
из вашего первого регулярного выражения ввторой вам нужно скопировать.Каждая оценка регулярного выражения сбрасывается $1
... $&
.Итак, вы хотите что-то вроде:
$self->{W_CONTENT} =~ /$regex/;
print $1; #is there a value? YES
my $old1 = $1;
$store{URL} =~ s/$param/$old1/;