Thread Daten suchen / filtern (20 answers)
Opened by testy at 2013-11-26 13:32

topeg
 2013-11-27 17:23
#172262 #172262
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Ich weiß nicht ob das Ergebnis auch dem entspricht was du dir vorstellst.
Bedenke das "$typ" ein Hex-wert ist (wenn ich es richtig verstehe), und perl kann hex-werte nicht als Index benutzen. Je nach dem ob du use warnings benutzt bekommst du da Warnungen und perl verändert den Wert. An meinem Beispiel:
aus "0F" macht perl "0" aus "1F" "1" aber aus "E4" wird "0" ich denke nicht das das ein korrektes Verhalten für dich ist.

Weiterhin kenne ich nicht die Regeln mit der die Daten erzeugt wurden. So wie du sie ablegst kann es sein ein ein später kommender wert eine vorher geschriebenen Folge überschreibt. willst du nicht eher ein 3Dimensionales Array? Also etwas in der Art:

Code (perl): (dl )
1
2
3
    my ($source,$typ,$offset,$data)=($1,$2,hex($3),$4);
    my @data=unpack("(a2)*",$data);
    $matrix[$typ][$offset]=\@data;


Und da hast du auch gleich ein besseren Weg die Daten einzufügen, wenn du es willst:
Code (perl): (dl )
1
2
3
4
    my ($source,$typ,$offset,$data)=($1,$2,hex($3),$4);
    my @data=unpack("(a2)*",$data);
    my $pos=$offset;
    $matrix[$typ][$pos++]=shift(@data) while(@data);


wenn dir die abstände zu groß sind kannst du auch ein Hash of Arrays machen (ein "HoA"):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my %matrix;

#...

    my ($source,$typ,$offset,$data)=($1,$2,hex($3),$4);
    my @data=unpack("(a2)*",$data);
    my $pos=$offset;
    $matrix{$typ}[$pos++]=shift(@data) while(@data);

#...

print Dumper(\%matrix);

View full thread Daten suchen / filtern