I guess you didn't try your program:
C:\>perl -w 676783.pl
Argument "0x2" isn't numeric in addition (+) at 676783.pl line 8.
Argument "0x28" isn't numeric in addition (+) at 676783.pl line 8.
This oneliner shows that this isn't the case:
>perl -le "print '0x42' + '0x10'"
But of course, if you leave off the single quotes, Perl will interpret the numbers as numbers (in hexadecimal notation) and add them like it does add all numbers (regardless of their notation):
>perl -le "print 0x42 + 0x10"
... but that's because internally, Perl does just see the numbers as numbers (without any representation to any base).