use strict; my %byte; my $mask = "267"; #example my @tests = ("test0", "test1", "test2", "test3", "test4", "test5", "test6", "test7", "test8"); @byte{@tests}= map { 1<<$_ } 0..8; #props to tye foreach my $test (@tests){ if($mask & $byte{$test}){ $mask = $mask ^ $byte{$test} unless $t->$test(); #if the test returned false we unset the bit } }