#!/usr/bin/perl -w use strict; my @AoA; open (IN,'){ my @chunks = split; push @AoA, [ @chunks[1..$#chunks]]; } my %neighbours; for my $domain (@AoA) { for my $idx (0 .. $#$domain) { my @near = grep {$_ >= 0 && $_ <= $#$domain} $idx - 1, $idx + 1; push @{$neighbours{$domain->[$idx]}}, map {$domain->[$_]} @near; } } open (DOMAINLIST,'); for my $domain(@domain){ my @array=@{$neighbours{$domain}}; @array=removeduplicates(@array); my $number=scalar @array; print "Domain $domain.......$number\n"; } sub removeduplicates{ my @array=@_; my %seen; $seen{$_}++ for @array; my @unique = keys %seen; return @unique; }