#!/usr/bin/perl # #use strict; use warnings; use File::Find; use List::Compare; use Data::Dumper; use feature "switch"; ## @tmp2 is the data given in the code snippet below my $who=(); my $field=(); foreach (@tmp2) { s/^(.*?):\s*//; $who=$1; $rec = {}; $HoH{$who}=$rec; for $field (split(/,/)) { ($key,$value) = split /=/, $field; $rec->{$key} =$value; } } ## Testing to see if the hash is working. ## Uncomment Section below to test. my $iter=(); my $iter2=(); for $iter (keys %HoH) { print "$iter: "; for $iter2 ( keys %{ $HoH{$iter}} ) { print "$iter2=$HoH{$iter}{$iter2} ,"; } print "\n"; } ############################################## ## ## Remove duplicate part numbers and combine the tags, if necessary. ## ## print "######################################"; print "Duplicate Removal Testing\n"; my %tmpHoH=%HoH; my $keyouter; my $valueouter; my $keydup; my $valuedup; my @keydelete=(); while ( ($keyouter,$valueouter)= each %HoH){ while ( ($keydup,$valuedup) = each %tmpHoH){ if($keyouter eq $keydup){ next; } if($HoH{$keyouter}{partnum} eq $tmpHoH{$keydup}{partnum}){ print "**********\n"; print "key: $keyouter, value: $HoH{$keyouter}{partnum}, tag= $HoH{$keyouter}{tags}\n"; print "key: $keydup, value: $tmpHoH{$keydup}{partnum}, tag= $tmpHoH{$keydup}{tags}\n"; $HoH{$keyouter}{tags}= $HoH{$keyouter}{tags} ." ". $tmpHoH{$keydup}{tags}; print "$tmpHoH{$keyouter}{tags}\n"; print "**********\n"; push(@keydelete,"$keyouter=>$keydup"); } } } print @keydelete;