#!/usr/local/bin/perl use Benchmark; my $var=13; my $length=6; timethese(100000, { CONCAT=>\&concat, SPRINTF=>\&spr_f, }); sub concat { my $a = $var; while (length($a)<$length) {$a="0$a";} } sub spr_f { my $a = $var; sprintf("%0$length", $a); } Results: Benchmark: timing 100000 iterations of CONCAT, SPRINTF... CONCAT: 2 wallclock secs ( 1.53 usr + 0.00 sys = 1.53 CPU) @ 65359.48/s (n=100000) SPRINTF: 0 wallclock secs ( 0.60 usr + 0.00 sys = 0.60 CPU) @ 166666.67/s (n=100000)