use strict;
use blib;
-use IsisDB;
+use Biblio::Isis;
use OpenIsis;
use MARC::File::USMARC;
my $isisdb = shift @ARGV || '/data/isis_data/ps/LIBRI/LIBRI';
-my $isis = IsisDB->new (
+my $isis = Biblio::Isis->new (
isisdb => $isisdb,
debug => shift @ARGV,
);
-my $rows = $isis->{'maxmfn'};
+my $isis_filter = Biblio::Isis->new (
+ isisdb => $isisdb,
+ debug => shift @ARGV,
+ hash_filter => sub {
+ my $v = shift;
+ return lc($v);
+ }
+);
+
+my $rows = $isis->count;
my $db = OpenIsis::open( $isisdb );
my $mfn = 1;
my $r = timethese( -5, {
- IsisDB => sub {
+ Isis => sub {
$isis->fetch( $mfn++ % $rows + 1 );
},
+ Isis_hash => sub {
+ $isis->to_hash( $mfn++ % $rows + 1 );
+ },
+ Isis_hash_filter => sub {
+ $isis_filter->to_hash( $mfn++ % $rows + 1 );
+ },
+
OpenIsis => sub {
OpenIsis::read( $db, $mfn++ % $rows + 1 );
},
+
+ OpenIsis_hash => sub {
+ my $row = OpenIsis::read( $db, $mfn++ % $rows + 1 );
+ my $rec;
+ no strict 'refs';
+ foreach my $f (keys %{$row}) {
+ foreach my $v (@{$row->{$f}}) {
+ push @{$rec->{$f}}, OpenIsis::subfields($v);
+ }
+ }
+
+ },
} );
cmpthese $r;