use strict;
print "$^V\n";
my $records=shift;
unlink "test_tie_hash";
use BerkeleyDB;
my %MAIN;
tie %MAIN, "BerkeleyDB::Hash", -Filename => "test_tie_hash", -Flags => DB_CREATE, or die "Cannot open file: $! $BerkeleyDB::Error\n";
my $key="AAAAAAA";
my $store="LLLL";
foreach (1 .. $records){
++$key;
$MAIN{$key}= $store;
}
untie %MAIN;
tie %MAIN, "BerkeleyDB::Hash", -Filename => "test_tie_hash", -Flags => DB_CREATE;
my %count=();
while ((my $key,my $value)=each (%MAIN)){
$count{$value}++;
}
untie(%MAIN);
foreach(keys(%count)){
print "INITIAL LOAD\n$_ $count{$_} records\n\n";
}
%count=();
$key="";
tie %MAIN, "BerkeleyDB::Hash", -Filename => "test_tie_hash", -Flags => DB_CREATE;
while ((my $key,my $value)=each (%MAIN)){
if($key=~m/U/){
$value .= "-YYYYYYYYYYYYYYYYYYYYYYYYYYYY";
$MAIN{$key}=$value
}
elsif($key=~m/L/){
$value .= "-ZZZZZZ";
$MAIN{$key}=$value;
}
else{
$value .= "-WWWWWWWWWWWWWWWWW";
$MAIN{$key}=$value;
}
}
untie(%MAIN);
tie %MAIN, "BerkeleyDB::Hash", -Filename => "test_tie_hash", -Flags => DB_CREATE;
while((my $key,my $value)=each (%MAIN)){
#print "$key $value\n";
$count{$value}++;
}
untie(%MAIN);
foreach(keys(%count)){
print "$_ $count{$_}\n";
}
####
$ perl -w test_each_tie 200
v5.10.0
INITIAL LOAD
LLLL 200 records
LLLL-WWWWWWWWWWWWWWWWW 185
LLLL-YYYYYYYYYYYYYYYYYYYYYYYYYYYY 7
LLLL-ZZZZZZ 8
####
$ perl -w test_each_tie 250
v5.10.0
INITIAL LOAD
LLLL 250 records
LLLL-WWWWWWWWWWWWWWWWW 101
LLLL-YYYYYYYYYYYYYYYYYYYYYYYYYYYY-YYYYYYYYYYYYYYYYYYYYYYYYYYYY 5
LLLL-ZZZZZZ-ZZZZZZ 6
LLLL-YYYYYYYYYYYYYYYYYYYYYYYYYYYY 4
LLLL-WWWWWWWWWWWWWWWWW-WWWWWWWWWWWWWWWWW 114
LLLL 16
LLLL-ZZZZZZ 4