Guest User

Untitled

a guest
Jan 20th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. my $itemHash = {
  2. tag1 => {
  3. name => "Item 1",
  4. order => 1,
  5. enabled => 1,
  6. },
  7. tag2 => {
  8. name => "Item 2",
  9. order => 2,
  10. enabled => 0,
  11. },
  12. tag3 => {
  13. name => "Item 3",
  14. order => 3,
  15. enabled => 1,
  16. },
  17. ...
  18. }
  19.  
  20. keys %$itemHash; # Resets the iterator
  21. while(my($tag, $item) = each %$itemHash) {
  22. print "$tag is $item->{'name'}"
  23. }
  24.  
  25. my @sorted = sort {$hash{$a}{order} <=> $hash{$b}{order}} keys %$itemHash;
  26.  
  27. my @sortedpairs = map {$_ => $itemHash->{$_}} @sorted;
  28.  
  29. sub ridiculousEach {
  30. my %hash = @_;
  31. return map
  32. {$_ => $hash{$_}}
  33. sort
  34. {$hash{$a}{order} <=> $hash{$b}{order}}
  35. keys %hash;
  36. }
  37.  
  38. sub giveIterator {
  39. my %hash = @_;
  40. my @sorted = sort {$hash{$a}{order} <=> $hash{$b}{order}} keys %hash;
  41. return sub {
  42. my $key = shift @sorted;
  43. return ($key => $hash{$key});
  44. };
  45. }
  46.  
  47. my $iterator = giveIterator(%$itemHash);
  48. while (my ($tag, $item) = $iterator->()) {
  49. ...;
  50. }
  51.  
  52. for my $key ( sort { $itemHash->{$a}{order} <=> $itemhash->{$b}{order} } keys %$itemHash ) {
  53. print "$key is $itemHash->{$key}{name}";
  54. }
  55.  
  56. my $itemHash = {
  57. tag1 => {
  58. name => "Item 1",
  59. order => 1,
  60. enabled => 1,
  61. },
  62. tag2 => {
  63. name => "Item 2",
  64. order => 2,
  65. enabled => 0,
  66. },
  67. tag3 => {
  68. name => "Item 3",
  69. order => 3,
  70. enabled => 1,
  71. }
  72. };
  73.  
  74. foreach((sort{$a cmp $b}(keys(%$itemHash)))){
  75. print "$_ is $itemHash->{$_}->{'name'}n";
  76. }
Add Comment
Please, Sign In to add comment