I'm writing a module using DB_File. The data seems to get saved to the file 'test.db' but fetching or Data::Dumper() the file doesn't seem to dump the data. Here's what I have so far:
package SubscriberList;
use strict;
use warnings;
use vars qw($VERSION);
$VERSION = '0.01';
use Data::Dumper;
use DB_File;
use Storable qw(freeze thaw);
sub new
{
my ($class,%args) = @_;
# get args
my $this;
$this->{filename} = $args{filename};
tie %{$this->{db}}, 'DB_File', $this->{filename};
bless $this, $class;
return $this;
}
sub DESTROY
{
my ($this) = @_;
untie %{$this->{db}};
}
sub add_subscriber
{
my ($this,%new_sub) = @_;
my $email = $new_sub{email};
delete $new_sub{email};
$this->{db}->{$email} = freeze \%new_sub;
return $this;
}
1;
...and here is the test script to add an entry:
# test.pl
use SubscriberList;
$list = new SubscriberList(filename=>'test.db');
$list->add_subscriber(
email=>'new@email.com',
first_name => 'New',
last_name => 'Subscriber',
);
$list->add_subscriber(
email=>'jar@jar.com',
first_name => 'JarJar',
last_name => 'Binks',
);
...and here is the code that dumps the seemingly empty data file:
use Data::Dumper;
use DB_File;
tie %hash, 'DB_File', 'test.db';
print Dumper(\%hash);
############
Ouput
$VAR1 = {};
The 'test.db' file seems to have data in it because when I run it through the command 'strings' all the values seem to be there.
Any suggestions? (besides go to bed and try agian tomorrow? ;-)
Cheers!
--
hiseldl
What time is it? It's Camel Time!
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.