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% --
In reply to Re^3: Capturing occurrence counts via tr/// with variable interpolation
by BrowserUk
in thread Capturing occurrence counts via tr/// with variable interpolation
by KenW
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |