I've added seekable and reversible hash iteration to Tree::RB. Here is an example:
use strict;
use warnings;
use feature 'say';
use Tree::RB;
my $tied = tie(my %capital, 'Tree::RB');
%capital = (
France => 'Paris',
England => 'London',
Hungary => 'Budapest',
Ireland => 'Dublin',
Egypt => 'Cairo',
Germany => 'Berlin',
);
say 'Countries starting from Germany:';
$tied->hseek('Germany');
while(my ($key, $val) = each %capital) {
say "key: $key, val: $val";
}
say "\nCountries in reverse:";
$tied->hseek({-reverse=> 1});
while(my ($key, $val) = each %capital) {
say "key: $key, val: $val";
}
Output:
Countries starting from Germany:
key: Germany, val: Berlin
key: Hungary, val: Budapest
key: Ireland, val: Dublin
Countries in reverse:
key: Ireland, val: Dublin
key: Hungary, val: Budapest
key: Germany, val: Berlin
key: France, val: Paris
key: England, val: London
key: Egypt, val: Cairo
|