use Digest::MD5 qw(md5 md5_hex md5_base64); # do unique value my %write_short; for my $index(keys %write){ #print "index $index\n"; my %trg = %{$write{"$index"}}; my %md5_line; my %md5_tg; for my $target( keys %trg ){ my $digest = md5_base64($trg{"$target"}); $md5_line{"$digest"}=$trg{"$target"}; push @{$md5_tg{"$digest"}},$target; } for my $digest(keys %md5_tg){ my $tg_line=join ',', @{$md5_tg{"$digest"}}; $write_short{"$index"}{"$tg_line"}=$md5_line{$digest}; } }