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;
In reply to BerkeleyDB question by Perl_Love
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |