Hi, I am trying to initiate a hash once when the package is loaded (via modperl). I don't want to make repeated DB queries for this data so I'd like to populate the hash when my daemon starts and not again until it's reloaded/started. I thought that I could say somethign like, "if %defaults, return %defaults else populate %defaults and return".
Here's the error I am getting: Can't modify private hash in logical or assignment (||=) at /export/web/lib/Foo.pm line 28, near "} Below is what I've attempted so far. Can someone give me a few pointers please? Thanx, Dp. package: Foo; use strict; use warnings; use DBI; my %defaults; sub getDefaults { %defaults ||= do { my $sql = q{SELECT * from bar}; my $sth = $dbh->prepare($sql); $sth->execute; my %vals; while (my $row = fetchrow_hashref) { %vals{$row->{id}} = $row->{'description'}; } %vals; } # Does this need a semi-colon? # Should I reurn here or return %defauls ||= do {...} } 1; #end of package. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/