I have an array of hashes that contains information about access points (name, mac address, etc.). I need to add serial numbers to this list, and I have to query the controller based on the AP's MAC address since this is a 1:1 relationship (i.e. there should never be MAC duplicates, and each MAC address has a specific corresponding serial number). Once I parse the response from the controller, I pick out the serial number. Now I need to update the AP hash and make sure the serial number gets paired with the element containing the correct MAC address. How can I do this? My only thought is to search the array each time finding the one that matches (using indices) and then use that current index value to update the hash. As an example:
#!c:/perl/bin/perl
use strict;
use warnings;
my @aps;
my $new_hash = {};
#Here I pull in a text file and parse it line by line, which I'm
#omitting, but it's a while loop that populates the
#hash and pushes to the array
$new_hash->{'ap_name'} = "AP One";
$new_hash->{'ap_MAC'} = "00:00:00:00:00:00";
$new_hash->{'ap_model'} = "1131";
push (@aps, $new_hash);
So let's say we use the MAC address of all zeros to query the controller for the serial number. Now I have to find the one and only element in my AoH that has that MAC address and add its serial number. My current thinking is to do this:
for my $i (0 .. $#aps) {
if $aps[$i]->{'ap_MAC'} eq "00:00:00:00:00:00" {
$aps[$i]->{'serial'} = "FTX12345678";
}
}
Rather than do an inefficient search that could potentially search the entire array (if it's the last element that matches) is there a more efficient way of directly accessing this matching element?
Regards,
Scott