C:\test>byChar.pl ... rgx_scalar => q[ our $string; while ( $string =~ /(.)/sg) { my $c = $1; } ], rgx_list => q[ our $string; for my $c ( $string =~ /(.)/sg) { ; } ], C:\test>byChar.pl Rate split rgx_list substr_refs rgx_scalar unpack substr chop rev_chop pre_split split 9984/s -- -34% -74% -75% -76% -77% -82% -83% -94% rgx_list 15104/s 51% -- -61% -62% -63% -65% -73% -74% -91% substr_refs 38242/s 283% 153% -- -3% -7% -12% -33% -34% -78% rgx_scalar 39574/s 296% 162% 3% -- -3% -9% -30% -32% -77% unpack 40959/s 310% 171% 7% 3% -- -6% -28% -29% -76% substr 43352/s 334% 187% 13% 10% 6% -- -24% -25% -75% chop 56695/s 468% 275% 48% 43% 38% 31% -- -2% -67% rev_chop 57962/s 481% 284% 52% 46% 42% 34% 2% -- -67% pre_split 173576/s 1639% 1049% 354% 339% 324% 300% 206% 199% --