BerkeleyDB
view release on metacpan or search on metacpan
eval { grep { $h{$_} } (1, 2, 3) };
ok (! $@);
undef $db ;
untie %h;
unlink $Dfile;
}
if(0)
{
# Filter without tie
use strict ;
my (%h, $db) ;
unlink $Dfile;
ok $db = tie %h, 'BerkeleyDB::Hash',
-Filename => $Dfile,
-Flags => DB_CREATE;
my %result = () ;
sub INC { return ++ $_[0] }
sub DEC { return -- $_[0] }
#$db->filter_fetch_key (sub { warn "FFK $_\n"; $_ = INC($_); warn "XX\n" }) ;
#$db->filter_store_key (sub { warn "FSK $_\n"; $_ = DEC($_); warn "XX\n" }) ;
#$db->filter_fetch_value (sub { warn "FFV $_\n"; $_ = INC($_); warn "XX\n"}) ;
#$db->filter_store_value (sub { warn "FSV $_\n"; $_ = DEC($_); warn "XX\n" }) ;
$db->filter_fetch_key (sub { warn "FFK $_\n"; $_ = pack("i", $_); warn "XX\n" }) ;
$db->filter_store_key (sub { warn "FSK $_\n"; $_ = unpack("i", $_); warn "XX\n" }) ;
$db->filter_fetch_value (sub { warn "FFV $_\n"; $_ = pack("i", $_); warn "XX\n"}) ;
#$db->filter_store_value (sub { warn "FSV $_\n"; $_ = unpack("i", $_); warn "XX\n" }) ;
#$db->filter_fetch_key (sub { ++ $_ }) ;
#$db->filter_store_key (sub { -- $_ }) ;
#$db->filter_fetch_value (sub { ++ $_ }) ;
#$db->filter_store_value (sub { -- $_ }) ;
my ($k, $v) = (0,0);
ok ! $db->db_put(3,5);
exit;
ok ! $db->db_get(3, $v);
ok $v == 5 ;
$h{4} = 7 ;
ok $h{4} == 7;
$k = 10;
$v = 30;
$h{$k} = $v ;
ok $k == 10;
ok $v == 30;
ok $h{$k} == 30;
$k = 3;
ok ! $db->db_get($k, $v, DB_GET_BOTH);
ok $k == 3 ;
ok $v == 5 ;
my $cursor = $db->db_cursor();
my %tmp = ();
while ($cursor->c_get($k, $v, DB_NEXT) == 0)
{
$tmp{$k} = $v;
}
ok keys %tmp == 3 ;
ok $tmp{3} == 5;
undef $cursor ;
undef $db ;
untie %h;
unlink $Dfile;
}
( run in 0.889 second using v1.01-cache-2.11-cpan-39bf76dae61 )