my @inventory_items_array; my $inventory_item; my %stock_current; my %stock_minimum; while ($inventory_item = $sth->fetchrow_hashref()){ $stock_current{$inventory_item->{'inventory_item_id'}} = $inventory_item->{'starting_quant'}; $stock_minimum{$inventory_item->{'inventory_item_id'}} = $inventory_item->{'starting_quant'}; $inventory_item->{'search'} = join(',', $inventory_item->{'name'}, $inventory_item->{'description'}, $inventory_item->{'inventory_item_id'}); push(@inventory_items_array, $inventory_item); } my $stock_change_data_ref; while ($stock_change_data_ref = $stock_change_sth->fetchrow_hashref()){ $stock_current{$stock_change_data_ref->{'inventory_item_id'}} += $stock_change_data_ref->{'Qty_Change'}; if ($stock_current{$stock_change_data_ref->{'inventory_item_id'}} < $stock_minimum{$stock_change_data_ref->{'inventory_item_id'}}){ $stock_minimum{$stock_change_data_ref->{'inventory_item_id'}} = $stock_current{$stock_change_data_ref->{'inventory_item_id'}}; } } foreach(@inventory_items_array){ $_->{'rem_avail_quant'} = $stock_minimum{$_->{'inventory_item_id'}}; $_->{'available'} = $_->{'rem_avail_quant'} . '/' . $_->{'inv_quant'}; }