Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: How do you sort keys of a hash in descending order and print 3 per line?

by bangor (Monk)
on Mar 16, 2016 at 01:27 UTC ( [id://1157885]=note: print w/replies, xml ) Need Help??


in reply to How do you sort keys of a hash in descending order and print 3 per line?

I think you are trying too hard :)
my %accounts = ( tom => "BigApple", tom2 => "BigApple2", tom3 => "BigApple3", tom4 => "BigApple4", tom5 => "BigApple5", tom6 => "BigApple6", tom7 => "BigApple7", ); # sort the users in descending order my $counter = 1; for my $userID (reverse sort keys %accounts) { print "$userID\t"; print "\n" if $counter++ % 3 == 0; } tom7 tom6 tom5 tom4 tom3 tom2 tom
  • Comment on Re: How do you sort keys of a hash in descending order and print 3 per line?
  • Download Code

Replies are listed 'Best First'.
Re^2: How do you sort keys of a hash in descending order and print 3 per line?
by GrandFather (Saint) on Mar 16, 2016 at 05:39 UTC

    You can avoid mucking about with counters and stuff by making the implicit list in the for loop an explicit array then splice chunks off it:

    #!/usr/bin/perl use warnings; use strict; my %accounts = ( tom => "BigApple", tom2 => "BigApple2", tom3 => "BigApple3", tom4 => "BigApple4", tom5 => "BigApple5", tom6 => "BigApple6", tom7 => "BigApple7", ); my @keys = reverse sort keys %accounts; print join ("\t", @$_), "\n" while @$_ = splice @keys, 0, 3;

    Prints:

    tom7 tom6 tom5 tom4 tom3 tom2 tom
    Premature optimization is the root of all job security
Re^2: How do you sort keys of a hash in descending order and print 3 per line?
by MikeyG (Novice) on Mar 16, 2016 at 03:32 UTC

    I received this message: Argument "t" isn't numeric le (<=) at c:\users\michael\desktop\lab7-startup.pl line 119, <STDIN> line 17. Any idea why?

      I received this message: Argument "t" isn't numeric le (<=) ... Any idea why?

      Because you've mis-copy/pasted the code. I can copy/paste the exact code posted by bangor above and run it with warnings and strict enabled, and no complaint from Perl.


      Give a man a fish:  <%-{-{-{-<

        My code looks exactly like the one you suggested.

      He's a monk, not a clairvoyant!

      Please post the relevant line of code that the error is pointing you to :-)


      The way forward always starts with a minimal test.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2025-01-17 07:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Which URL do you most often use to access this site?












    Results (55 votes). Check out past polls.