The first thing I note is that your method doesn't handle double-entries. The first entry found with that value will be the one used.

One question I'd have is if you need to maintain the initial ordering. If you don't, you could build some sort of Schwartzian transform and move the cross-array slices around that way.

A deeper question would be if parallel arrays are really what you want to do. Anytime I see parallel arrays, especially in Perl, I start itching to offer up possible better solutions. For example, you have a record. Whenever I hear "record", I immediately think "hash". They're built for storing records. Then, you have a list of hashrefs for your various records. If you need to print out all of a given field, then iterate over the array.

The reason I suggest this is that sorting this list of hashrefs becomes trivial.

@sorted_list = sort {$a->{Field} <=> $b->{Field} || $a->{Field} cmp $b->{Field}} @unsorted_list
And, double-entries are automatically taken care of. Plus, you can now do multi-level sorts. Sort on state, then town, or whatever.

In reply to Re: Sorting arrays and maintaining an index by satchboost
in thread Sorting arrays and maintaining an index by Prince99

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.