J'ai besoin de créer une fonction "obscurcissante" qui remplace le mot de passe en texte clair en ligne, avant de l'écrire dans le journal.Comment puis-je échapper des métacaractères d'expression régulière à partir d'une variable interpolée en Perl?
Il ressemble à ceci:
function pass_obscure {
my $logline = shift;
my $pass = "wer32pass$"; # this password is an example, the real one is received as parameter, or already stored as global value
$logline =~ s/$pass/*********/g;
return $logline;
}
Mais cela, bien sûr, ne fonctionne pas. Le signe '$' dans la chaîne de mot de passe est interpolé en tant que caractère de fin de ligne, donc il n'y a pas de correspondance, et donc le remplacement ne fonctionne pas.
Comment puis-je résoudre ce problème?
Merci.
ok, désolé, déjà résolu. La solution, bien sûr, est d'utiliser: my $ pattern = quotemeta $ pass; $ logline = ~ s/$ motif/********/g; Merci quand même – Alex
duplication possible de [Comment gérer les caractères spéciaux dans une regex Perl?] (Http://stackoverflow.com/questions/576435/how-do-i-handle-special-characters-in-a- perl-regex) – daxim