HoH sortiert ausgeben

HoH sortiert ausgeben

am 16.02.2007 12:57:52 von Bernd Schroeder

Hallo,

ich habe hier ein Logfile zur Weiterverarbeitung. Folgendes Format:

Uhrzeit PID Text
===================================
12:15:16 [1234] Daemon start
12:15:18 [1255] Verbindung von $IP-1
12:17:20 [1266] Verbindung von $IP-2
12:20:21 [1255] Beende Verbindung von $IP-1
12:21:11 [1345] Verbindung von $IP-3
12:22:21 [1266] Beende Verbindung von $IP-2
....

Der Daemon (1234) startet pro Verbindung ein Child-Prozeß, die aber zu
verschiedenen Zeiten (also durcheinander) ihre Einträge machen. Das
einzigste, was pro Child immer gleich ist, ist die PID.

Ich habe das ganze nun in ein HoH eingelesen:

$VAR = { '1255' => { Startzeit => '12:15:18',
IP => '1.2.3.4',
Endzeit => '12:20:21' },
'1266' => { Startzeit => '12:17:20',
IP = '5.6.7.8',
Endzeit => '12:22:21' },
....

Ich möchte nun den HoH sortiert nach der Starzeit zurückgeben, damit ich
den weiterverarbeiten kann.

Wie stelle ich das am sinnigsten an?

Mfg Bernd+

Re: HoH sortiert ausgeben

am 16.02.2007 13:13:32 von Wolf Behrenhoff

Bernd Schroeder schrieb:
> Hallo,
>
> Ich habe das ganze nun in ein HoH eingelesen:
>
> $VAR = { '1255' => { Startzeit => '12:15:18',
> IP => '1.2.3.4',
> Endzeit => '12:20:21' },
> '1266' => { Startzeit => '12:17:20',
> IP = '5.6.7.8',
> Endzeit => '12:22:21' },
> ...
>
> Ich möchte nun den HoH sortiert nach der Starzeit zurückgeben, damit ich
> den weiterverarbeiten kann.

Mit sort... :-)

for (sort {$VAR->{$a}->{Startzeit} cmp $VAR->{$b}->{Startzeit}}
keys %$VAR) {
use Data::Dumper;
print Dumper $VAR->{$_};
}

Wolf