#!/usr/bin/env perl use strict; use warnings; my $var1 = 0b00010100; my $var2 = 0b00000110; my $fmt = "%08b\n"; print "Initial:\n"; printf $fmt, $var1; printf $fmt, $var2; for my $bit (0, 1, 4) { print "Bit $bit off:\n"; $var1 = set_bit_off($bit, $var1); printf $fmt, $var1; $var2 = set_bit_off($bit, $var2); printf $fmt, $var2; } sub set_bit_off { my ($bit, $num) = @_; my $mask = 1 << $bit; $num ^= $mask if $num & $mask; return $num; }