#!/usr/bin/perl -w use strict; use Benchmark qw(:all :hireswallclock); cmpthese( 2000, { 'Method 1' => 'for (0..300) { my $ord = method_1($_) }', 'Method 2' => 'for (0..300) { my $ord = method_2($_) }', 'Method 3' => 'for (0..300) { my $ord = method_3($_) }', 'Method 4' => 'for (0..300) { my $ord = method_4($_) }', 'Ordinate' => 'for (0..300) { my $ord = ordinate($_) }', }); sub ordinate { my $num = shift; $num =~ s/(\d*(11|12|13|4|5|6|7|8|9|0))$/$1th/ or $num =~ s/(\d*(1))$/$1st/ or $num =~ s/(\d*(2))$/$1nd/ or $num =~ s/(\d*(3))$/$1rd/; return $num; } sub method_1 { my $suffix; my $nouser = shift; if ($nouser =~ /(?