my %index_of; @index_of{ @filenames } = (0..$#filenames); # given a filename, find its predecessor or successor: my $predecessor = $filenames[ $index_of{ $filename } - 1 ]; my $successor = $filenames[ $index_of{ $filename } + 1 ];