I'm having a hard time understanding and getting started with hashes. I
don't think I get the concept, and so can't go from the concept to the
actual code.

I have a MySQL database table called "methods" with three fields,
methodid, method, and sname. I'd like to read them into a hash, so that
I could refer to them there (in memory) rather than repeatedly reading
the database. 

Here's the output of the table:
mysql> select * from method;
+----------+------------------------------------+---------+
| methodid | method                             | sname   |
+----------+------------------------------------+---------+
|        1 | Combined OCs                       | COC     |
|        2 | Progestin-Only OCs                 | POC     |
|        3 | DMPA/NET EN                        | DMPA    |
|        4 | Norplant Implants                  | NI      |
|        5 | Female Sterilization               | FS      |
|        6 | Vasectomy                          | Vas     |
|        7 | Condoms                            | Condoms |
|        8 | TCu-380A IUD                       | TCu     |
|        9 | Spermicides                        | Sperm   |
|       10 | Diaphragm Cervical Cap             | DCC     |
|       11 | Fertility Awareness-based Methods  | FABM    |
|       12 | Lacational Amenorrhea Method (LAM) | LAM     |
+----------+------------------------------------+---------+
12 rows in set (0.01 sec)

(I work in the field of reproductive health. Can you tell?)

I think I can read in the table with this code, but don't know how to
build it into a hash:
use DBI;
our $dbh = DBI->connect("dbi:mysql:cire:localhost", "cire", "password",
{RaiseError => 1, AutoCommit => 0}) or die;
my $method_arrayref = $dbh->selectall_arrayref("SELECT methodid,
method, sname FROM method ORDER BY methodid");
[Don't know what to do here to build it into a hash, that I can
reference by explicitly stating the methodid, then using the method or
sname.]

Instead of the selectall_arrayref, I can use a while loop and read the
table one row at a time, using fetchrow_arrayref, but I still don't know
how to use that to build the hash. Would this method be easier?

Finally, when I've got the hash built, how can I get a particular
method, by specifying it's methodid, or instance?

Thanks for your help and suggestions. Please let me know if I should
take this question to the DBI-users list.

-Kevin Zembower

-----
E. Kevin Zembower
Unix Administrator
Johns Hopkins University/Center for Communications Programs
111 Market Place, Suite 310
Baltimore, MD  21202
410-659-6139

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to