$char = chr ord $string; #### #!/usr/bin/perl -w use strict; use Benchmark 'cmpthese'; my $str = "some string here"; cmpthese( 500000, { 'pop_chord' => sub { pop_chord($str) }, '_substr' => sub { _substr($str) }, '_unpack' => sub { _unpack($str) }, '_match' => sub { _match($str) }, } ); sub pop_chord { chr ord pop } sub _substr { substr pop,0,1 } sub _unpack { unpack"a",pop } sub _match { (pop=~/(.)/s)[0] } __END__ Benchmark: timing 500000 iterations of _match, _substr, _unpack, pop_chord _match: 3 secs (3.22 usr + 0.01 sys = 3.23 CPU) @ 154798.76/s _substr: 0 secs (0.85 usr + 0.00 sys = 0.85 CPU) @ 588235.29/s _unpack: 2 secs (2.04 usr + 0.00 sys = 2.04 CPU) @ 245098.04/s pop_chord: 1 secs (0.73 usr + 0.00 sys = 0.73 CPU) @ 684931.51/s Rate _match _unpack _substr pop_chord _match 154799/s -- -37% -74% -77% _unpack 245098/s 58% -- -58% -64% _substr 588235/s 280% 140% -- -14% pop_chord 684932/s 342% 179% 16% --