Hash-StoredIterator
view release on metacpan or search on metacpan
lib/Hash/StoredIterator.pm view on Meta::CPAN
Same as the builtin C<keys()>, except it stores and restores the iterator.
B<Note:> Overriding the builtin keys(), even locally, causes strange
interactions with other builtins. When trying to export hkeys as keys, a call
to C<sort keys %hash> would cause undef to be passed into keys() as the first
and only argument.
=item my @values = hvalues( %hash )
Same as the builtin C<values()>, except it stores and restores the iterator.
B<Note:> Overriding the builtin values(), even locally, causes strange
interactions with other builtins. When trying to export hvalues as values, a
call to C<sort values %hash> would cause undef to be passed into values() as
the first and only argument.
=item my $i = hash_get_iterator( \%hash )
Get the current iterator value.
=item hash_set_iterator( \%hash, $i )
Set the iterator value.
B<Note:> Only ever set this to the value retrieved by C<hash_get_iterator()>,
setting the iterator in any other way is untested, and may result in undefined
behavior.
=item hash_init_iterator( \%hash )
Initialize or reset the hash iterator.
=back
=head1 DEPRECATED
These have been deprecated because they were terrible names. eich was also
deprecated because it was unnatural to use.
=over 4
=item eich
use iterator() instead
=item eech
use hmap instead
=back
=head1 CAVEATS
=over 4
=item Modification of hash during iteration
Just like with the builtin C<each()> modifying the hash between calls to each
is not recommended and can result in undefined behavior. The builtin C<each()>
does allow for deleting the iterations key, however that is B<NOT> supported by
this library.
=item sort() edge case
For some reason C<[sort hkeys %hash]> and C<[sort hkeys(%hash)]> both result in
a list that has all the keys and values (and strangely not in sorted order).
However C<[sort(hkeys(%hash))]> works fine.
=back
=head1 AUTHORS
Chad Granum L<exodist7@gmail.com>
=head1 COPYRIGHT
Copyright (C) 2013 Chad Granum
Hash-StoredIterator is free software; Standard perl licence.
Hash-StoredIterator is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.
( run in 1.393 second using v1.01-cache-2.11-cpan-71847e10f99 )