Perl regex kullanarak belirli bir dizede birkaç özel karakter kaçmaya çalışıyorum. Dolar işareti hariç tüm karakterler için iyi çalışıyor. Denedim aşağıdadır:
my %special_characters;
$special_characters{"_"} = "\\_";
$special_characters{"$"} = "\\$";
$special_characters{"{"} = "\\{";
$special_characters{"}"} = "\\}";
$special_characters{"#"} = "\\#";
$special_characters{"%"} = "\\%";
$special_characters{"&"} = "\\&";
my $string = '$foobar';
foreach my $char (keys %special_characters) {
$string =~ s/$char/$special_characters{$char}/g;
}
print $string;
Daha iyi bir yaklaşım: kullanmak 'quotemeta()' veya 's/\ Q $ Char \ e/...' Sen regexpleri onları interpole beri, her $ değişken için bunu hatırlamalıyız. – hhaamu