my $vec = []; sub setBit { my($vec, $offset, $val)= @_; my $index= $offset >> 31; my $subset= $offset & 0x7fffffff; $vec->[$index]||=''; vec($vec->[$index], $subset, 1)= ($val & 1); } sub getBit { my($vec, $offset)= @_; my $index= $offset >> 31; my $subset= $offset & 0x7fffffff; $vec->[$index]||=''; return vec($vec->[$index], $subset, 1); }