use strict; use warnings; my %seen; # here we note addresses we saw already while (){ my ($country, $city, $street, $number, $name) = split; next unless ++$seen{$country}{$city}{$street}{$number} == 2; print "Second name at $city, $country, $street, $number is $name\n"; } __DATA__ Country City1 Street1 number1 name1 Country City1 Street1 number1 name2 Country City1 Street1 number2 name3 Country City1 Street2 number1 name4 Country City1 Street2 number1 name5