use List::Util qw( sum ); my $input = '000181080002020202020202'; my $sum = sum map { hex } split /([a-f0-9]{2})/, $input; my $xored_sum = 0xff ^ $sum; printf "hex of %d: %X\n", $xored_sum, $xored_sum; __END__ hex of 103: 67