@arr = qw ( up down in out left right ); # 6 elements @sel = ( 1, 3, 4 ); $mask = 0b000000; # Need to set this to have as # many bits as the size of @arr # Maybe better to pass it in # by reference? printf(" org \$mask: %0b\n", $mask); @revsel = reverse(@sel); foreach $item (@revsel) { vec($mask, $item, 1) = 1; printf("\$item: $item \$mask: %0b\n", $mask); } printf(" final \$mask: %0b\n", $mask);