Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Re: sorting based on a list

by ChemBoy (Priest)
on May 09, 2001 at 19:05 UTC ( #79114=note: print w/replies, xml ) Need Help??

in reply to Re: sorting based on a list
in thread sorting based on a list

Nice idea--I propose the following modification, to dump extra words at the end (and to use string comparison, of course):

my $sortstr = join('', @list); my @sorted_list = sort { rindex($sortstr,substr($b,0,1)) <=> rindex($sortstr,substr($a,0,1)) || $a cmp $b } @list2;

Of course, you might want words that start with letters not in the list to be at the front, in which case, alphie's solution is preferable (aside from using <=> instead of cmp).

Update: doh! It doesn't do what I thought it did! Fix coming...
Fix here:

my $sortstr = join('', @list); my @sorted_list = sort { my ($tmp1,$tmp2); (($tmp1 = index($sortstr,substr($a,0,1))) >= 0 ? $tmp1 : length($sort +str)) <=> (($tmp2 = index($sortstr,substr($b,0,1))) >= 0 ? $tmp2 : length($sort +str)) || $a cmp $b } @list2;

If God had meant us to fly, he would *never* have give us the railroads.
    --Michael Flanders

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://79114]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (7)
As of 2018-12-11 08:39 GMT
Find Nodes?
    Voting Booth?
    How many stories does it take before you've heard them all?

    Results (53 votes). Check out past polls.

    • (Sep 10, 2018 at 22:53 UTC) Welcome new users!