Initial Commit
This commit is contained in:
34
database/perl/vendor/lib/IO/All/MLDBM.pm
vendored
Normal file
34
database/perl/vendor/lib/IO/All/MLDBM.pm
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
use strict; use warnings;
|
||||
package IO::All::MLDBM;
|
||||
|
||||
use IO::All::DBM -base;
|
||||
|
||||
field _serializer => 'Data::Dumper';
|
||||
|
||||
sub mldbm {
|
||||
my $self = shift;
|
||||
bless $self, __PACKAGE__;
|
||||
my ($serializer) = grep { /^(Storable|Data::Dumper|FreezeThaw)$/ } @_;
|
||||
$self->_serializer($serializer) if defined $serializer;
|
||||
my @dbm_list = grep { not /^(Storable|Data::Dumper|FreezeThaw)$/ } @_;
|
||||
$self->_dbm_list([@dbm_list]);
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub tie_dbm {
|
||||
my $self = shift;
|
||||
my $filename = $self->name;
|
||||
my $dbm_class = $self->_dbm_class;
|
||||
my $serializer = $self->_serializer;
|
||||
eval "use MLDBM qw($dbm_class $serializer)";
|
||||
$self->throw("Can't open '$filename' as MLDBM:\n$@") if $@;
|
||||
my $hash;
|
||||
my $db = tie %$hash, 'MLDBM', $filename, $self->mode, $self->perms,
|
||||
@{$self->_dbm_extra}
|
||||
or $self->throw("Can't open '$filename' as MLDBM file:\n$!");
|
||||
$self->add_utf8_dbm_filter($db)
|
||||
if $self->_has_utf8;
|
||||
$self->tied_file($hash);
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user