DBass
view release on metacpan or search on metacpan
$self->{'_OBJ'}->sync;
}
############################# XEEN DESTRUCTOR #############################
sub xeen_destroy {
my $self = shift;
return 1 unless defined $self->{'_OBJ'};
undef $self->{'_OBJ'};
untie %$self->{'_HASHREF'};
if ($^O eq 'MacOS' || $^O eq 'MacPerl') {
chmod 0666, $self->{'_LOCK'};
} else {
flock $self->{'_FH'}, LOCK_UN;
CORE::close $self->{'_FH'};
}
}
################################ XEEN KEYS ################################
sub xeen_keys {
my $self = shift;
keys %{$self->{'_HASHREF'}};
############################# XEEN CONSTRUCTOR #############################
sub xeen_new {
my $self = shift;
my %argv = ('-mode' => 0644, @_);
die unless $argv{'-file'};
($self->{'_FILE'} = $argv{'-file'}) =~ s/^([+<>]+)//;
$self->{'_MODE'} = $1 || '';
$self->{'_LOCK'} = $argv{'-lock'};
$self->{'_UNTAGGED'} = {};
if ($^O eq 'MacOS' || $^O eq 'MacPerl') {
chmod 0444, $self->{'_LOCK'};
} else {
if ($self->{'_MODE'} =~ /[+>]/) {
open FH, '>>' . $self->{'_LOCK'} or die $!;
unless (flock FH, LOCK_EX) {
CORE::close FH;
die;
}
} else {
open FH, $self->{'_LOCK'} or die $!;
unless (flock FH, LOCK_SH) {
( run in 0.389 second using v1.01-cache-2.11-cpan-496ff517765 )