in reply to Re^2: Capturing occurrence counts via tr/// with variable interpolation
in thread Capturing occurrence counts via tr/// with variable interpolation
Hmm. Works for me?
#! perl -slw use strict; use Benchmark qw[ cmpthese ]; our $str = 'azbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzzz'; our $SrchStr = 'z'; my $n1 = eval "\$str =~ tr/$SrchStr/$SrchStr/"; my $n2 = ( $str ^ ($SrchStr x length $str ) ) =~ tr[\0][\0]; my $n3 = @{[ $str =~ m/$SrchStr/g ]}; print "$n1 : $n2 : $n3"; cmpthese -1, { eval => q[ my $n = eval "\$str =~ tr/$SrchStr/$SrchStr/" ], xor => q[ my $n = ( $str ^ ($SrchStr x length $str ) ) =~ tr[\0][ +\0]], match=> q[ my $n = @{[ $str =~ m/$SrchStr/g ]} ], }; __END__ [14:50:30.01] P:\test>eval-v-xor.pl 27 : 27 : 27 Rate eval match xor eval 24183/s -- -23% -98% match 31450/s 30% -- -97% xor 1127154/s 4561% 3484% --
|
|---|