# populate filename array my @filenames = qw(file1 file2 file3 file4 file5 file6); my %next; my %prev; # Link next to first filename $next{$filenames[0]} = $filenames[1]; # Link next and prev to all the filenames for (my $fileindex = 1; $fileindex < scalar (@filenames) - 1; $fileindex++) { $next{$filenames[$fileindex]} = $filenames[$fileindex + 1]; $prev{$filenames[$fileindex]} = $filenames[$fileindex - 1]; } # Link prev to last filename $prev{$filenames[-1]} = $filenames[-2];