sub keycalc { my @key = @_; for (0..$#key) { $key[$_] = pack 'h2', unpack 'H2', ($_ ? $key[$_] ^ $key[$_ - 1] # : $key[-1] ^ $key[-2] ^ 5); # same error : $key[-1] ^ $key[-2] ^ chr(5)); } @key; } print unpack( 'H*', join '', @lock_arr), $/; print unpack( 'H*', join '', keycalc( @lock_arr)), $/;