The answer you are seeking is vec.
This snippet prints a bit string (as a string rather than a number as your number could be 128-bits which would move into the realms of floating point inaccuracies), consisting of the value of the 49th through 69th bits, of the 6, 543, 210th 128-bit chunk of a 100MB string.
open F, '<', 'e:\100MB' or die $!; binmode F; { local $/ = \(100*1024*1024); $data = <F> }; sub bits_of_chunk{ my( $chunk, $start, $end ) = @_; join'', map{ vec $data, $_, 1 } ($chunk * 16 * 8 + $start) .. ($chunk * 16 * 8 +$end); }; print bits_of_chunk( 6543210, 49, 69 ); 000000000000000000000
The bits are accessed directly from the 100MB string and are return very quickly.
In reply to Re: perl bitology - breaking into bytes
by BrowserUk
in thread perl bitology - breaking into bytes
by spurperl
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |