Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^2: Hash throws out duplicate values

by spickles (Scribe)
on Oct 12, 2009 at 08:56 UTC ( [id://800635]=note: print w/replies, xml ) Need Help??


in reply to Re: Hash throws out duplicate values
in thread Hash throws out duplicate values

I was going to use a hash of arrays, but that will get messy real quick. So how would I use a while loop to connect to my database and populate each record of the hash? Here's my current code:

while (my $records = $query_handle->fetchrow_hashref) { my $new_name = $records->{'ap_name'}; my $location = $records->{'building'}; my $first_name = $records->{'primary_name'}; my $first_ip = $records->{'primary_ip'}; my $second_name = $records->{'secondary_name'}; my $second_ip = $records->{'secondary_ip'}; my $third_name = $records->{'tertiary_name'}; my $third_ip = $records->{'tertiary_ip'}; my $group = $records->{'bldg_short'}; my $five_channel = $records->{'five_channel'}; my $configured = $records->{'configured'}; my $mac_name = $records->{'mac_name'}; #Add each element as a hash to an Array of Hashes (AoH) my $new_hash = { new_name => $new_name, location => $location, first_name => $first_name, first_ip => $first_ip, second_name => $second_name, second_ip => $second_ip, third_name => $third_name, third_ip => $third_ip, group => $group, five_channel => $five_channel, configured => $configured, mac_name => $mac_name }; push (@aps, $new_hash); }

Can I step through the array 'records' and enter unique records using a loop with $i? I don't know where to place the $i to make it work.

Replies are listed 'Best First'.
Re^3: Hash throws out duplicate values
by ikegami (Patriarch) on Oct 12, 2009 at 09:17 UTC

    What's the key? Do you even need a hash? You haven't said what you're trying to do.

Re^3: Hash throws out duplicate values
by Marshall (Canon) on Oct 12, 2009 at 10:20 UTC
    I am curious, when I look at your input, I see 11 comma separated fields. When I look at your hash record field names, I see 12. Where did 'ap_name' go to or rather where could it come from? There seems to be a field missing. Perhaps I am blind and/or am miscounting. Either thing could be! I am also curious as to why you wouldn't use the same $var name as the hash key, ie, instead of my $new_name = $records->{'ap_name'}; Why not my $ap_name = $records->{'ap_name'} ?

      What I'm trying to do is pull records from a database that has information about how an access point should be configured. I wanted to read that data into an array of hashes so that I could then step through each of the elements and repeat the commands I would type at the command prompt to configure them and automate the process. The reason for the use of $new_name and $old_name is so that during the automation process I can keep track of which variable I am using. When the database info is imported, the ap name is the new one it needs to be changed to. I run a different sub to query the ap for its old name, which happens to be the default name it boots up with. Then, to change its name, I issue the command 'config ap name <new> <old>' So, as I said, I thought an array of hashes would be the ticket, and that I would then just step through the array and duplicate all of my cli commands.

        I am certainly not a DB guy, but I think you have the wrong type of query. I would think that fetching rows from the DB makes more sense. This row that you would get from the DB will be in a fixed order. Using hash slice, you can make a hash and push it onto an array.

        So maybe the first place to start is with these 11 fields. I couldn't figure out the DB names for all of these so, I just put x,y,z. If you could fill-in the second column below, that would be most helpful.

        JP-AP1-1-RM_210, xxxxx Johanna Perrin, yyyyy wism3-1, zzzzz 10.137.139.2, wism4-1, 10.137.139.6, wism7-1, 10.137.139.10, JP, 149, not_configured
        The basic idea is to get a row from the DB, then make a %hash from that row (with the keys being x,y,z above) and then push a ref to that hash onto an array.

        You will wind up with a memory structure with same info as in the DB. The order of the records within the structure will not correlate to any kind of order within the DB (I guess you know that).

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://800635]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2024-04-24 12:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found