Ionizor has asked for the wisdom of the Perl Monks concerning the following question:
I'm trying to create a pair of hashes so that I can easily traverse a list of filenames in either direction. The code I've come up with follows. Does anybody know a more efficient way to do this? Preferably so that I can remove the ugly "do first case, loop by index, do last case" thing I've got. I'd prefer one loop but didn't want to put a pair of ifs inside that will only be used once each.
# 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; $fileind +ex++) { $next{$filenames[$fileindex]} = $filenames[$fileindex + 1]; $prev{$filenames[$fileindex]} = $filenames[$fileindex - 1]; } # Link prev to last filename $prev{$filenames[-1]} = $filenames[-2];
Thanks, monks.
--
Grant me the wisdom to shut my mouth when I don't know what I'm talking about.
Back to
Seekers of Perl Wisdom