C:\test>241328 Name "main::substr" used only once: possible typo at C:\test\241328.pl line 6. Name "main::bytewise" used only once: possible typo at C:\test\241328.pl line 5. Name "main::vec" used only once: possible typo at C:\test\241328.pl line 7. Benchmark: running bytewise, substr, vec , each for at least 5 CPU seconds ... bytewise: 5 wallclock secs ( 5.17 usr + 0.01 sys = 5.18 CPU) @ 1.55/s (n=8) Use of uninitialized value in substr at (eval 6) line 1. substr: 6 wallclock secs ( 6.05 usr + 0.00 sys = 6.05 CPU) @ 0.83/s (n=5) vec: 6 wallclock secs ( 5.22 usr + 0.00 sys = 5.22 CPU) @ 0.96/s (n=5) s/iter substr vec bytewise substr 1.21 -- -14% -47% vec 1.04 16% -- -38% bytewise 0.647 87% 61% -- C:\test>