Perl_Love has asked for the wisdom of the Perl Monks concerning the following question:
A program "write.pl" continue to generate data to test.db, another program read.pl continuously from the test.db read data. When the data test.db is 1 to 30, but only read.pl read 1 to 9, after that always show 9.
I want to run write.pl at the same time running read.pl, rather than wait until the write.pl runs, and then run read.pl.
Procedures are as follows, thank you!
#!/usr/bin/perl -w use warnings; use BerkeleyDB; $|=1; my $env=new BerkeleyDB::Env -Home=>'/home/www', -Flags=>DB_CREATE|DB_INIT_MPOOL || die; my %hash; my $db=tie(%hash,"BerkeleyDB::Btree", -Filename=>"test.db", -Flags=>DB_CREATE, -Env=>$env) || die; for(1..30){ $hash{$_}=$_; sleep 2; } untie $db;
#!/usr/bin/perl -w use warnings; use BerkeleyDB; $|=1; my $env=new BerkeleyDB::Env -Home=>'/home/www' || die; my %hash; my $db=tie(%hash,"BerkeleyDB::Btree", -Filename=>"test.db", -Env=>$env) || die; my $k; my $v; my $cursor = $db->db_cursor(); while(1){ my $status=$cursor->c_get($k, $v, DB_NEXT); if($status != 0){ ; } else{ print "$k\t$v\n"; } } untie $db;
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: BerkeleyDB question
by Corion (Patriarch) on Jun 18, 2016 at 10:00 UTC | |
Re: BerkeleyDB question
by $h4X4_|=73}{ (Monk) on Jun 18, 2016 at 09:54 UTC | |
by afoken (Chancellor) on Jun 18, 2016 at 10:49 UTC |
Back to
Seekers of Perl Wisdom