use strict; my $debug = 1; my $dec= 254; print "$dec\n"; print shift_left($dec) ; sub dec2bin { my $str = unpack("B32", pack("N", shift)); $str =~ s/^0+(?=\d)//; # otherwise you'll get leading zeros print "$str\n" if $debug; return $str; } sub bin2dec { return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); } sub shift_left { my $bin_reversed = reverse dec2bin(shift); chop $bin_reversed; print ' ' . reverse ($bin_reversed) . '0' . "\n" if $debug; return bin2dec(reverse ($bin_reversed) . '0'); } #### 254 11111110 11111100 252