my @header_line = ('id', 'name', 'age'); my %fields; @fields{@header_line} = (0 .. $#header_line); #result: %fields = { id => 0, name => 1, age => 2}; #### #!/usr/bin/env perl use strict; use warnings; use Algorithm::Permute; my @people = qw(Brian Carlos Dana Evan Farra); my $iter = new Algorithm::Permute(\@people); while (my @perm = $iter->next) { my %positions; @positions{@perm} = (0..$#perm); my $test = #Brian next to Dana abs($positions{Brian} - $positions{Dana}) == 1 #Dana not next to Evan && abs($positions{Dana} - $positions{Evan}) > 1 #Carlos on Dana's right && $positions{Carlos} - $positions{Dana} == 1 #one seat between Brian and Farra && abs($positions{Brian} - $positions{Farra}) == 2; if ($test) { print "@perm\n"; } }