What version of Perl are you using? When I run your code on my system (WinXP, ActivePerl 5.8.8), I get an incorrect answer. I added a the use warnings pragma to your code and got this result:
C:\> test.pl Argument "0x2" isn't numeric in addition (+) at C:\test.pl line 9. Argument "0x28" isn't numeric in addition (+) at C:\test.pl line 9. 0 0
You can specify hexadecimals in literal code by appending an '0x' to the value. I suppose, if you really wanted to get to a hexadecimal from a string, you could use string eval.
my $this = sprintf("0x%x", 40); my $that = sprintf("0x%x", 2); my $other = eval "$this + $that"; printf "$other %x\n", $other;
I'd be inclined to go with hex, though.
TGI says moo