#!/usr/local/bin/perl -w use strict; use Benchmark; use vars qw/$str/; $str = "123456789asgdjlaskjglkajblnlbnlaqjteoijqotijwojgl;akjglkj"; timethese(shift || 10000, { 'unpack' => sub { my $char = getn_unpack($str, 30) }, 'substr' => sub { my $char = getn_substr($str, 30) }, 'split' => sub { my $char = getn_split($str, 30) } }); sub getn_unpack { return unpack "x" . ($_[1]-1) . "a", $_[0]; } sub getn_substr { return substr $_[0], $_[1]-1, 1; } sub getn_split { return +(split //, $_[0])[$_[1]-1]; }