#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @folks = qw(Hans Maria Jochen Hans Maria Johann Hans Rainer); my %seen; for (0 .. $#folks) { $seen{$folks[$_]}->{cnt}++; push @{$seen{$folks[$_]}->{position}}, $_; } print Dumper \%seen; my @unique = map { { $_ => $seen{$_} } } grep { $seen{$_}->{cnt} == 1 } keys %seen; my @often = map { { $_ => $seen{$_} } } grep { $seen{$_}->{cnt} > 1 } keys %seen; print Dumper \@unique, \@often;