#!/usr/bin/perl use Benchmark; sub switchsign { if (substr($_[0],0,1) eq '-') { substr($_[0],0,1)='+'; } elsif (substr($_[0],0,1) eq '+') { substr($_[0],0,1)='-'; } else { substr($_[0],0,0)='-'; } } sub unsign { if (substr($_[0],0,1) eq '-') { substr($_[0],0,1)=''; } elsif (substr($_[0],0,1) eq '+') { substr($_[0],0,1)='-'; } else { substr($_[0],0,0)='-'; } } use constant X => '-'.'99999'; timethese(100_000, { switchsign => sub { my $a = X; switchsign($a) }, unsign => sub { my $a = X; unsign($a) }, });