in reply to Re^2: doing tr/// on-the-fly?
in thread doing tr/// on-the-fly?

Thanks. That is useful information to have.

Any information on CPAN modules to use for escaping? It would really help if something were installed by default. :)

Replies are listed 'Best First'.
Re^4: doing tr/// on-the-fly?
by Anonymous Monk on Mar 18, 2010 at 13:33 UTC
    Dynamic tr is kind of nonsensical, just use s///, it will be just as fast
      just use s///, it will be just as fast

      Not even close:

      $from = 'abcd'; $to = '1234';; @t = map 'axbxcxdx' x 10, 1 .. 1000;; cmpthese -1, { tr => q[ my $tr = eval "sub{ \$_[0] =~ tr[$from][$to] }"; $tr->( $_ ) for @{[ @t ]}; ], s => q[ my %tr; @tr{ split'', $from } = split'', $to; s[([$from])]{ $tr{$1} }eg for @{[@t]} ], };; Rate s tr s 32.0/s -- -97% tr 1054/s 3189% -- @t = map 'axbxcxdx' x 1000, 1 .. 1000;; cmpthese -1, { tr => q[ my $tr = eval "sub{ \$_[0] =~ tr[$from][$to] }"; $tr->( $_ ) for @{[ @t ]}; ], s => q[ my %tr; @tr{ split'', $from } = split'', $to; s[([$from])]{ $tr{$1} }eg for @{[@t]} ], };; (warning: too few iterations for a reliable count) s/iter s tr s 2.65 -- -99% tr 1.98e-002 13317% --

      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.