http://qs321.pair.com?node_id=634966


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.

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.