Thread Anfängerproblem mit "Sortierung" einer Liste (9 answers)
Opened by Glems at 2009-08-26 13:45

Taulmarill
 2009-08-26 14:53
#124853 #124853
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Ich würde das ganze erst mal in eine vernünftige Datenstruktur packen. Hab da mal was gebastelt:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use strict;
use warnings;

# string aus __DATA__ herausholen
my $string = <DATA>;

# die ersten beiden Datenfelder überspringen
$string =~ /(?:[^;]+);(?:[^;]+)/cg;

# hash deklarieren, der die Datenstruktur hält
my %timestamps;

#immer drei Werte aus den String holen
while( $string =~ /([^;]+);([^;]+);([^;]+)/cg ) {
    # und die drei gecaptureten werte in die Datenstruktur bringen
    push @{ $timestamps{$2}->{$1} }, $3;
}

# datenstruktur lesbar ausgeben
use Data::Dumper;
print Dumper \%timestamps;

# alles unter __DATA__ kann man mit dem Filehandle DATA auslesen
__DATA__
Tool;breakpointTime;name1;02.02.2009 02:02:02;2;name1;03.08.2009 10:10:10;10;name1;03.03.2009 03:03:03;3;name1;01.01.2009 01:01:01;1;name1;16.06.2009 10:59:58;0;name2;02.02.2009 02:02:02;2;name2;03.08.2009 10:10:10;10;name2;03.03.2009 03:03:03;3;name2;01.01.2009 01:01:01;1;name2;16.06.2009 10:59:58;0;

Vielleicht hilft das ja schon mal.

Zum sortieren würde ich die Zeitstempel in ein gut zu sortierendes Format bringen. Z.B. UNIX Epoch.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B

View full thread Anfängerproblem mit "Sortierung" einer Liste