my @block = qw( D C CD B BD BC BCD A AD AC ACD AB ABD ABC ABCD ); unshift @block, ''; # empty string for 0 $bin =~ m{([01]+)}; # untaint input my $idx = eval "0b$1"; my $result = $block[$idx];