From your statement of the problem, it sounds like all the codes are unique. That allows you to use a translation hash. Lets set one up starting with an Array-of-Arrays that is built directly from your data.
You have a problem with the design which will make this construction fail as it is. What country is supposed to come back when you say $translator{EURO}[country]? Your question does not hold up on meeting real data.my @code_data = [ ['US','USA','USD'], # ... ]; my %translator = map { $_->[0] => $_, $_->[1] => $_, $_->[2] => $_ } @code_data; use constant ccode => 0; use conatant country => 1; use constant currency => 2; print $translator{USA}[currency]; print $translator{USD)[ccode];
The currency elements need to hash to an array. You may have other data with similar properties. It doesn't have to be painful, but it's not as simple as above:
That makes your lookups a little more complicated, but that is dictated by the problem domain.# construct %translator as before, but only for unique keys for (@code_data) { push @{$translator{$_->[currency]}}, $_; }
After Compline,
Zaxo
In reply to Re: data structure problem
by Zaxo
in thread data structure problem
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |