|
|||||||||||||||||||||||||||
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>
|
||||||||||||||
|
||||||||||||||