SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] Sortering af tal i en hash



On Mon, Jun 18, 2001 at 11:31:29PM +0200, Jesper Lund wrote:
> Hej,
> 
> Jeg er ved at skrive lidt logparser til min ProFTPd log. I den
> frobindelse har jeg fået lavet noget med en hash der ser sådan her ud:
> 
> $filnavn{antal gange den er hentet}
> 
> Den vil jeg gerne have skrevet ud i nummerorden:
> 
> print "<table border=1>\n";
> foreach $i (keys(%filnavn)) {
>     print "<tr><td>$i<td>$filnavn{$i}\n";
> }
> 
> men der kommer de jo i den rækkefælge de nu lige tilfældigt står i i
> hashen.
> 
> Hvis jeg gerne vil have den fil der er downet flest gange øverst i
> tabellen, skal de sorteres efter det tal som man kan angove i hashen.
> Men hvordan ? Findes der en smart funktion, eller skal man selv lave
> noget spaghetti-programmering ?

$ perl -e '%filnavn = ("en" => 5, "to" => 3, "tre" => 10); print map { "$_ => $filnavn{$_}\n" } sort { $filnavn{$b} <=> $filnavn{$a} } keys %filnavn;'
tre => 10
en => 5
to => 3

Saa noget lignende:
foreach my $fil (sort { $filnav{$b} <=> $filnavn{$a} } keys %filnavn) {

burde vaere det du leder efter..

-- 
  Thomas Eibner <http://thomas.eibner.dk/> DnsZone <http://dnszone.org/>
  mod_pointer <http://stderr.net/mod_pointer> 



 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:53
Denne side vedligeholdes af MHonArc .