+ next unless
+ m/^ \@ *\d+ ([ap])\# *\d+ \|.*\| *\d+ +(\d+) +(\d+) *\| ([0-9 ]+)$/;
+ my ($ap,$isles) = (uc $1,$4);
+ next if $results{$ap} && %{$results{$ap}} >= $maxcountea;
+ my $item= { A => $2, P => $3 };
+ my (@i, @a);
+ foreach (split / /, $isles) {
+ my ($name,$arch)= $isleinfo->($_);
+ push @i, $name;
+ push @a, $arch unless @a && $a[-1] eq $arch;
+ }
+ $item->{Isles}= [ @i ];
+ $item->{Archs}= [ @a ];
+ $item->{Start}= $i[0];
+ $item->{Finish}= $i[-1];
+ $item->{Vias}= [ ];
+ my $i;
+ for ($i=1; $i < @i-1; $i++) {
+ push @{ $item->{Vias} }, $i[$i];
+ }
+ $results{$ap}{$isles}= $item;