Sorry ich kapier's immer noch nicht, aber es scheint so als waere das was du erledigen willst in Perl viel einfacher zu loesen.Ich habe mir noch einmal den vorhergehenden Thread angesehen (http://www.perlunity.de/cgi-bin/forum/forum_thread_linear.cgi?tid=19962&mid=40572&fid=8&pn=0).
Dort beschreibst du, dass du die geringste Distanz ermitteln moechtest. Und dass wahrscheinlich fuer jede Klasse?
Und in diesen Post, dass du so bald die ID sich von den vorhergehenden Eintrag unterscheiden, die Schleife abbrechen und (vermutlich) den Index zurueckgeben moechtest.
Ich rate mal ins Blaue:
#!/usr/bin/perl use strict;
use warnings;
chomp(my $head = <DATA>);
my @head = split /\s+\|\s+/, $head;
my %data;
while(my $line = <DATA>) {
chomp($line);
my($id, $dist, $class) = split /\s+?\|\s+?/, $line;
$data{$class} ||= {};
$data{$class}->{$id} ||= [];
push(@{$data{$class}->{$id}}, $dist);
}
foreach my $class_id (sort keys %data) {
my $class = $data{$class_id};
print "CLASS: '$class_id'\n";
foreach my $obj_id (sort keys %{$class}) {
my $obj = $class->{$obj_id};
print "\tOBJ: '$obj_id'\n";
foreach my $dist (@{$obj}) {
print "\t\tDIST: $dist\n";
}
}
}
__DATA__
ID | dist | class
13001 | 34 | 1
13001 | 37 | 1
99001 | 134 | 1
99001 | 114 | 1
12001 | 120 | 2
12001 | 24 | 2
Datum: 30.05.2007-13:57
