use strict; use warnings; # string aus __DATA__ herausholen my $string = ; # 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;