in reply to Scrubbing a string

You'll probably reject this because it uses string eval, but it is simple and effective.

$ex = 'p!u-r-*e'; $ctl = 'pure';; eval "\$ex =~ tr[$ctl][]cd;"; print $ex;; pure

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Replies are listed 'Best First'.
Re^2: Scurbbing a string
by Anonymous Monk on Aug 25, 2007 at 09:17 UTC
    Won't that fail, or even produce incorrect results, if $ctl includes tr metacharacters?

      Yes. But remember that $ctl in that snippet is the equivalent of the OPs $pure, not the variable being cleaned.

      Still, I guess they could legitimately contain meta chars. If the OPs $pure variable(s) are sourced from outside of his program or genuinely might contain meta characters, then a quotemeta would probably be appropriate.

      Indeed, it might be good if that were mentioned in the eval tr example in perlop.


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.