use strict; use warnings; use constant {UP => 0x0<<3, DOWN => 0x1<<3, LEFT => 0x3<<3, RIGHT => 0x2<<3, MASK => 0x3<<3}; printf "direction Mask: "; print8bits (MASK); #Prints: direction Mask: 0001 1000 my $register8b=0; #set direction left $register8b = $register8b & ~MASK | LEFT; print8bits ($register8b); #Prints: 0001 1000 #set direction down $register8b = $register8b & ~MASK | DOWN; print8bits ($register8b); #Prints: 0000 1000 sub print8bits { my $int = shift; print map{s/(\d{4})/$1 /g;$_;}sprintf "%08b\n", $int; }