my $i = int(rand(length($str)-1));
You have an off-by-one problem there.
Say that $str has a length of 8 and so has characters at positions 0 through 7.
length($str)-1 will produce random numbers in the range 0 through 6, one less than the length of the string.
Update:
This produces the same result as your pack_str subroutine:
sub pack_str { my ( $s ) = @_; return pack 'B*', $s; }
In reply to Re: Bit-vector compression
by jwkrahn
in thread Bit-vector compression
by baxy77bax
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |