HoH sortiert ausgeben

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+
Bernd Schroeder [ Fr, 16 Februar 2007 12:57 ] [ ID #1631880 ]

Re: HoH sortiert ausgeben

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
Wolf Behrenhoff [ Fr, 16 Februar 2007 13:13 ] [ ID #1631881 ]
Perl » de.comp.lang.perl.misc » HoH sortiert ausgeben

Vorheriges Thema: System() mit rsync will nich so recht
Nächstes Thema: Von Perl zu TCL und wieder zurück...