use 5.14.0; my @data = map { unpack "C", $_ } ("\xA3", "\x05", "\x00", "\x00", "\x00", "\x00", "\x00"); sub checksum { use integer; my $sum16bit = 0; $sum16bit = ($sum16bit + $_) & 65535 for @_; my $sumdivmod = ($sum16bit >> 8) + ($sum16bit & 255); return ((($sumdivmod >> 8) + ($sumdivmod & 255)) & 255); } say checksum(@data);