in reply to Probelm with priority printing (hash or by an array)

(Originally posted to one of the dupe topics)

The sane approach would be to store the priority in the database with the rest of the information and obtain the list sorted by the priority.

If you can't do that, save the priorities in a hash, but reverse to what you show in your post:

%priority = ( Flu => 1, Cold => 1, ...
then, given you have your data from db in an AoA, sort it using something like @sorted = sort({$priority{$$a[0]} <=> $priority{$$b[0]}} @list); (I expect the disease names in the first field here)

Replies are listed 'Best First'.
Re^2: Probelm with priority printing (hash or by an array)
by Anonymous Monk on Nov 07, 2008 at 12:12 UTC
    I was doing that way before posting here and sorted that with the value: something like this:
    foreach my $pri(sort {$prior{$a} <=> $prior{$b}} keys %prior) print $pri, $prior{$pri}, "\n";


    where 'prior' is the hash and I had them getting sorted if I print them right after sorting. But after getting the data from the database I would like to get them in the same order as I have initialized them in the hash/array. My problem is to get them sorted in the net report I am going to print by the priority. Also, I have two different sets of disease with the same disease repeating in both the sets.

    As in your suggestion, you mean @sorted as a new array which sorts by priority of the array obtained from the database? Could any one make me clear whether I have understand the point clearly?
    once again,Thanks for your suggestions
      Update: Sorry I tried through your suggestion and it gives an error message with
      Can't use string ("XXXX2: Multiple sclerosis") as an ARRAY ref while " +strict refs" in use at dna_reportertest line 139
      I cant really understand why is that so.. when it goes through all the other disease (nearly 5 before)? Any comments? Thanks