in reply to grep flex

One possibility is to use a HoA'a instead of your AoA's for your table. That would make the lookup process much quicker than a linear search.

#! perl -slw use strict; use Data::Dumper; my $table=[[1,2,2,3,2,1],[qw(a b c d e a)],[qw(A D D C B A)]]; #! Convert your AoA's to a HoA's. #! Use the values from the arrays as the key and store the indices in +the array #! You could just store the index as the value if the keys are unique. #! Better to build it this way in the first place though. my %table; push @{$table{"0:$table->[0][$_] 1:$table->[1][$_] 2:$table->[2][$_]"} +}, $_ for 0..$#{$table->[0]}; print Dumper(\%table); #! To find all entries which match on all three elements my @elements = qw(0:1 1:a 2:A); my @matches = @{$table{"@elements"}} if exists $table{"@elements"}; print "Element ids: @matches contained elements: @elements"; #! To find elements that match on a subset @matches = (); /0:2/ and /2:D/ and push @matches, @{$table{$_}} for keys %table; print "Element ids @matches contain elements: 0:2 2:D";

Gives

c:\test>218070 $VAR1 = { '0:2 1:e 2:B' => [ 4 ], '0:2 1:c 2:D' => [ 2 ], '0:1 1:a 2:A' => [ 0, 5 ], '0:2 1:b 2:D' => [ 1 ], '0:3 1:d 2:C' => [ 3 ] }; 0:1 1:a 2:A Element ids: 0 5 contained elements: 0:1 1:a 2:A Element ids 2 1 contain elements: 0:2 2:D c:\test>

The caveat is that if your table elements contain 'n:...' sequences, then you might need to use a different fields specifier, but that wouldn't be too hard. Wrapping the lookup into a function that build the search keys from a list supplied would neaten the whole thing up a bit.


Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.