use strict; use warnings; my $ndata = '35312c38'; my $ndataxor = 0; for my $num (map { hex } split //, $ndata) { printf "%x xor %x -> %x\n", $ndataxor, $num, $ndataxor ^ $num; $ndataxor ^= $num; }