As a general thing, don't keep parallel data structures. Instead keep one data structure of items where each item has all the related parts. In this case an array of array pairs or an array of hashes:
use strict; use warnings; my @dataA = ( ['this', 0], ['array', 2], ['is', 3], ['an', 1], ); my @dataH = ( {word => 'this', index => 0}, {word => 'array', index => 2}, {word => 'is', index => 3}, {word => 'an', index => 1}, ); print "$_->[0] " for sort {$a->[1] <=> $b->[1]} @dataA; print "\n"; print "$_->{word} " for sort {$a->{index} <=> $b->{index}} @dataH;
fits the bill. The hashes version looks like overkill, but has the advantage that the code tends to be self documenting because you access the fields by name rather than by index.
In reply to Re: keep track of array indexes
by GrandFather
in thread keep track of array indexes
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |