Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^2: Hash sorting (by value) woes

by sschneid (Deacon)
on Feb 24, 2005 at 17:05 UTC ( [id://434146]=note: print w/replies, xml ) Need Help??


in reply to Re: Hash sorting (by value) woes
in thread Hash sorting (by value) woes

That makes sense. Thanks.

-s.

Replies are listed 'Best First'.
Re^3: Hash sorting (by value) woes
by ikegami (Patriarch) on Feb 24, 2005 at 17:14 UTC

    Here's an optmization that only executes the regexp once per string:

    @sorted_keys = map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { $etcpw->{$_} =~ /:(\d+)/; [ $_, $1 ] } keys %{$etcpw}; print "$etcpw->{$_}\n" foreach @sorted_keys;

    We can even drop a step:

    print "$etcpw->{$_->[0]}\n" foreach sort { $a->[1] <=> $b->[1] } map { $etcpw->{$_} =~ /:(\d+)/; [ $_, $1 ] } keys %{$etcpw};
      Of course, if you really want to use map instead of foreach:
      print map {"$etcpw->{$_}\n"} sort { $a->[1] <=> $b->[1] } map { $etcpw->{$_} =~ /:(\d+)/; [ $_, $1 ] } keys %{$etcpw};

      Caution: Contents may have been coded under pressure.

        True, but it would be slower.

        print map { ...1... } ...2...;

        is closer to

        @temp_list = map { ...1... } ...2...; print @temp_list;

        than to

        print ...1... foreach ...2...;

        The extra assignment slows things down. (About twice as slow, IIRC previous tests.)

        Update: Fixed brain fart R.J. noticed.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (4)
As of 2024-04-19 16:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found