#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11108780 use warnings; use Data::Dump 'dd'; my @suggestionsTemp = ( { origin => "IB", sourceL => "", targetL => "Ahnenforschung" }, { origin => "IB", sourceL => "", targetL => "akzent" }, { origin => "EU", sourceL => "", targetL => "Akzent" }, { origin => "IB", sourceL => "", targetL => "Akzent" }, ); dd \@suggestionsTemp; my @suggestionsUnsorted; my %targets; for my $h (@suggestionsTemp) { push @suggestionsUnsorted, ($targets{lc $$h{targetL}}={targetL=>$$h{targetL}}) unless $targets{lc $$h{targetL}}; $targets{lc $$h{targetL}}{origin}{$$h{origin}}++; # $targets{lc $$h{targetL}}{count}++; } for ( values %targets ) { $$_{count} = keys %{$$_{origin}}; $$_{origin} = join ', ', sort keys %{$$_{origin}}; } @suggestionsTemp = values %targets; dd \@suggestionsTemp;