Take me over?
NAME
Tie::VecArray - An array interface to a bit vector.
SYNOPSIS
require
Tie::VecArray;
$vector
=
''
;
vec
(
$vector
, 0, 32) = 33488897;
# Tie the vector to an array as 8 bits.
$obj
=
tie
@array
,
'Tie::VecArray'
, 8,
$vector
;
@array
[0..3] =
qw(1 255 256 -1)
;
# SURPRISE! Its 1, 255, 0, 255!
@array
[0..3];
# Look at the same vector as a 32 bit vector.
$obj
->bits(32);
# Back to 33488897
$array
[0];
DESCRIPTION
This module implements an array interface to a bit vector.
Method
- tie
-
$vec_obj
=
tie
(
@array
,
'Tie::VecArray'
,
$bits
);
$vec_obj
=
tie
(
@array
,
'Tie::VecArray'
,
$bits
,
$vec
);
Creates a new @array tied to a bit vector. $bits is the number of bits which will be passed to
vec()
to interpret the vector.If $vec is given that will be used as the bit vector, otherwise the vector will start out empty.
- bits
-
$bits
=
$vec_obj
->bits;
$vec_obj
->bits(
$bits
);
Get/set the bit size we'll use to interpret the vector.
When setting the bit size the length of the array might be ambiguous. (For instance, going from a one bit vector with five entries to a two bit vector... do you have two or three entries?) The length of the array will always round up. This can cause odd things to happen. Consider:
$vec_obj
=
tie
@vec
,
'Tie::VecArray'
, 1;
# A one bit vector with 5 entries.
@vec
[0..4] = (1) x 5;
# prints a size of 5, as expected.
print
scalar
@vec
;
# Switch to two bit interpretation.
$vec_obj
->bits(2);
# This returns 3 since it will round up.
print
scalar
@vec
;
# Switch back to one bit.
$vec_obj
->bits(1);
# Whoops, 6!
print
scalar
@vec
;
CAVEATS
- Its slow
-
Due to the sluggishness of perl's tie interface, this module is about 8 times slower than using direct calls with
vec()
. Suck. If you care alot about speed, don't use this module. If you care about easy bit vector access or low memory usage, use this module. - No multidimentional arrays
-
$vec_array[$i][$j] = $num; isn't going to work. A future class will cover this possibility.
AUTHOR
Michael G Schwern <schwern@pobox.com>
SEE ALSO
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 204:
You forgot a '=back' before '=head1'