use strict; use warnings; use Benchmark qw(cmpthese); my $str = < \&graff, 'duff' => \&duff, 'jbrug' => \&jbrug, 'jbrug2' => \&jbrug2, } ); sub graff { my $txt = substr $str, 0, $maxlen; } sub duff { my $txt = $str; $txt =~ s/(.{1,$maxlen})\b.*/$1.../; } sub jbrug { my $txt = $str; $txt =~ m/.{$maxlen}/gs; } sub jbrug2 { my @a = split("",$str); my $txt=""; for (my $i=0; $i<$maxlen; $i++) { $txt .= $a[$i]; } } #### Rate jbrug2 duff jbrug graff jbrug2 3596/s -- -98% -99% -100% duff 153325/s 4164% -- -78% -94% jbrug 689852/s 19086% 350% -- -73% graff 2525239/s 70130% 1547% 266% --