Hi Punit,

On Mon, 6 Aug 2012 15:30:49 +0530
punit jain <contactpunitj...@gmail.com> wrote:

> Hi,
> 
> I have a program where a subroutine creates a hash. I want to later
> tie it to BerkleyDB.

First of all, one should note that BerkeleyDB can only handle hashes where the
keys and the values are all strings. Otherwise, be aware that I don't think
you can tie a hash after the fact to BerkeleyDB. But one thing you can do
is populate a BerkeleyDB database with the contents of such a hash.

Oterhwise, I would recommend against using most tie-based interfaces, and use
the plain object-oriented interfaces instead. See Perl Best Practices for the
reason.

Regards,

        Shlomi Fish

> 
> my $users = {};
> my $entry = {};
> my $env =  new BerkeleyDB::Env
>         -Home => $tmp_dir,
>         -Flags => DB_CREATE|DB_INIT_CDB|DB_INIT_MPOOL
>         or die "cannot open environment: $BerkeleyDB::Error\n";
> my $berkeleydb_temp_file = "/tmp/tmp.berkeleydb";
> my $sdat = searchfunc(  $users, $entry ); # sdat is a reference to
> hash of hash of hash
> 
> my $db = tie %$sdat, 'BerkeleyDB::Hash',
>         -Filename => $berkeleydb_temp_file,
>         -Flags    => DB_CREATE,
>         -Env      => $env
>         or die "Cannot create file: $! $BerkeleyDB::Error\n";
> 
> this doesnot seem to work and I cannot retrieve anything from $db.
> 
> Any ideas ?
> 
> Regards,
> Punit



-- 
-----------------------------------------------------------------
Shlomi Fish       http://www.shlomifish.org/
First stop for Perl beginners - http://perl-begin.org/

Logic sucks. Morality sucks. Reality sucks. Deal with it!

Please reply to list if it's a mailing list post - http://shlom.in/reply .

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to