sub extractPartTuplesFromURL { my $cgi = shift; my %partTuples; foreach my $tuple ($cgi->param('partID')) { my($id, $version, $classificiation) = split(/,/, $tuple); next if $partTuples{$id}; # Keeps the first entry. Remove it if you want to keep the last. $partTuples{$id} = [$version,$classificiation]; } map {{id => $_, version => $partTuples{$id}->[0], classification => $partTuples{$id}->[1]}} keys %partTuples; }