Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re^3: How to use a variable in tr///

by Anonymous Monk
on Jan 18, 2021 at 16:56 UTC ( #11127067=note: print w/replies, xml ) Need Help??

in reply to Re^2: How to use a variable in tr///
in thread How to use a variable in tr///

Below is the code. I tried different lengths of strings (upper bound in 1..10000) and number of iterations (first argument to timethese).
#!/usr/bin/perl use strict; use warnings; use Benchmark qw/cmpthese timethese/; my $y = join "", 1..10000; my %tr; @tr{map chr, 0..255} = map chr, 1..255,0; my $tr = eval 'sub {$_[0] =~ tr/\x00-\xff/\x01-\xff\x00/r}'; my $trans = sub { my $x = $y; $x =~ tr/\x00-\xff/\x01-\xff\x00/r; }; my $subst = sub { my $x = $y; $x =~ s/(.)/$tr{$1}/egr; }; my $eval = sub { my $x = $y; eval '$x =~ tr/\x00-\xff/\x01-\xff\x00/r'; }; my $preceval = sub { my $x = $y; &$tr($x); }; my $z = &$trans; $z eq &$subst or die; $z eq &$eval or die; $z eq &$preceval or die; length($y) == length($z) or die; printf "length: %s\n", length($y); timethese(0, { trans => $trans, subst => $subst, eval => $eval, preceval => $preceval, });

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11127067]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2021-02-27 17:54 GMT
Find Nodes?
    Voting Booth?

    No recent polls found