in reply to Optimise Sub, make hash unique based on values in array

My best guess at what you are doing

#!perl use strict; use Data::Dump 'pp'; my %combo = ( 'ID1' => [0,'sv1','sv2','pv1','pv2'], 'ID2' => [1,'sv1','sv2','pv1','pv2'], 'ID3' => [0,'sv1','sv3','pv1','pv2'], 'ID4' => [1,'sv1','sv2','pv1','pv2'], 'ID5' => [1,'sv1','sv2','pv1','pv2'], ); open my $fh,'>','output.txt' or die "$!"; my $count = uniqify($fh,3,\%combo); pp $count; sub uniqify { my ($fh,$pid_ix,$href) = @_; my %count=(); foreach my $key (keys %$href){ my ($purch,$sv1,$sv2,$pid) = @{$href->{$key}}[0..2,$pid_ix]; my $prodID = join '_',$sv1,$sv2; if ($purch){ $prodID .= '0'; } else { $prodID .= '_-'; } # counts if (exists $count{$prodID}{'dedup'}{$pid}){ ++$count{$prodID}{'dup_count'}; } else { ++$count{$prodID}{'dedup_count'}; $count{$prodID}{'dedup'}{$pid} = 1; print $fh (join "\t",$key,@{$href->{$key}})."\n"; } ++$count{$prodID}{'total_count'}; } return \%count; }
poj