DBM-Deep

 view release on metacpan or  search on metacpan

lib/DBM/Deep/Storage/File.pm  view on Meta::CPAN

    my $fh = $self->{fh};
    my $len = length( join '', @_ );

    seek( $fh, $loc + $self->{file_offset}, SEEK_SET );

    if(tell($fh) > $len + 2 ** (8 * $self->{byte_size}) - 1) {
        die("DBM::Deep: too much data, try a bigger pack_size\n");
    }

    if ( DEBUG ) {
        my $caller = join ':', (caller)[0,2];
        warn "($caller) print_at( " . (defined $loc ? $loc : '<undef>') . ", $len )\n";
    }

    print( $fh @_ ) or die "Internal Error (print_at($loc)): $!\n";

    return 1;
}

=head2 read_at( $offset, $length )

lib/DBM/Deep/Storage/File.pm  view on Meta::CPAN

sub read_at {
    my $self = shift;
    my ($loc, $size) = @_;

    my $fh = $self->{fh};
    if ( defined $loc ) {
        seek( $fh, $loc + $self->{file_offset}, SEEK_SET );
    }

    if ( DEBUG ) {
        my $caller = join ':', (caller)[0,2];
        warn "($caller) read_at( " . (defined $loc ? $loc : '<undef>') . ", $size )\n";
    }

    my $buffer;
    read( $fh, $buffer, $size);

    return $buffer;
}

=head2 DESTROY



( run in 0.872 second using v1.01-cache-2.11-cpan-a3c8064c92c )