sub uniq { my %seen; grep !$seen{$_}++, @_; } my @filtered = uniq(@lists); for my $list (@filtered) { printGroups($list->{groups}, %group); print $list->{line}; print "\n"; }