Steve: Wie Hash sortieren?

Hallo zusammen,
habe folgende Frage.

Ich habe einen Hash mit Städtenamen als Index definiert. Jeder Eintrag des Hashes hat als Wert die Einwohneranzahl.

Stadt    |  Einwohneranzahl
Stadt 1  |  22222
Stadt 2  |  1111111
Stadt 3  |  2333344

Wie kann man nun den Hash nach der Einwohneranzahl sortieren. Die Ausgabe soll dann wie folgt sein:

Stadt    |  Einwohneranzahl
Stadt 3  |  2333344
Stadt 2  |  1111111
Stadt 1  |  22222

Ich weiss, dass man z.B. die Valuewerte des Hashes, also die Einwohneranzahl, in ein Array kopieren kann. Diese kann man ja dann sortieren. Aber wie bekommt man dann wieder den Bezug zu den Städten hin?

Hat jemand einen Tip?

Danke,
Steve

  1. Hi,

    Wie kann man nun den Hash nach der Einwohneranzahl sortieren.

    perldoc perlfaq4 enthält alles, was Du wissen musst.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,

    du läßt dir in einer Schleife anstatt den Keys einfach die Values ausgeben und
    benutzt sort() um diese zu sortieren.

    MfG
    alligator

    1. Hi alligator,

      vielen, vielen Dank für die Info.

      Ich habe aber jetzt ein Problem die Städtenamen auszugeben.

      foreach $ort (values %ortNameAnz)
      {
       print "$ort\n"; # Anzahl Einwohner
       print "$ortNameAnz{$ort}\n"; # Ort  ==> geht nicht
      }

      Weist du wie?

      Bye,
      Steve

      1. Servus,

        each ist dein Freund :o)
        http://www.perldoc.com/perl5.8.0/pod/func/each.html

        cya
        alligator

  3. try this:

    %st = (
     'Berlin','999999',
     'Hamburg','888898',
     'Karlsruhe','333000',
     'Weimar','56000',
    );

    foreach my $st(sort{ ew($a) <=> ew($b) } keys %st){
     print "Ort: $st, Einwohner: $st{$st}\n";
    }

    sub ew{ return $st{$_[0]} }

    Mehr zum Sortieren findest du auch auf der PerlBase