I'm not sure what you are trying to do, but there are a number of obvious errors in your code.

  1. $element=$_; most likely sets $element to undef - $_ does not contain whatever you think it does
  2. $element used in foreach $element is not the same $element used in print " $h{$element}";. The value used with the hash is most likely undef.
  3. $h{$element}=$domains1[$i+1]; replaces the value from the $h{$element}=$domains1[$i-1]; assignment.

If resolving the errors pointed out above doesn't fix your problem then you should show us a small sample of your input data and the output you expect from it. Maybe though you want to achieve something like:

use strict; use warnings; my $list = <<LIST; PF10417.3 PF11001.3 PF05.3 LIST my @domains1 = ('PF05.3', 'PF11001.3', 'PF00389.24', 'PF10417.3'); my @domains2 = ('PF01', 'PF02', 'PF11001.3', 'PF00389'); my @domains3 = ('PF00389.24', 'PF05.3', 'PF01', 'PF00389'); my %neighbours; for my $domain (\@domains1, \@domains2, \@domains3) { for my $idx (0 .. $#$domain) { my @near = grep {$_ >= 0 && $_ <= $#$domain} $idx - 1, $idx + +1; push @{$neighbours{$domain->[$idx]}}, map {$domain->[$_]} @nea +r; } } open my $inList, '<', \$list or die "cannot open 'domainlist'becuase:$ +!"; while (defined (my $domain = <$inList>)) { chomp $domain; print "Domain $domain has neighbours: @{$neighbours{$domain}}\n"; }

Prints:

Domain PF10417.3 has neighbours: PF00389.24 Domain PF11001.3 has neighbours: PF05.3 PF00389.24 PF02 PF00389 Domain PF05.3 has neighbours: PF11001.3 PF00389.24 PF01
True laziness is hard work

In reply to Re: finding neighbors of an element in arrays by GrandFather
in thread finding neighbors of an element in arrays by persianswallow

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.