Thread Hash/Array aus Liste erzeugen
(8 answers)
Opened by mgsyslog at 2011-06-27 15:16
Verstehe ich es richtig, das der String, der zurück kommt, etwas wie perl aussieht?
Wenn dem so ist hast du zwei Möglichkeiten das zu Parsen: 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; # Daten lesen ... my $str=join('',<DATA>); my %data=(); # unsichere einfache Variante mit eval: if($str =~ m!\[\@Liste\](.+)\[/Liste\]!is) { my @queryColumns; my @queryData; eval($1); die("PARSE ERROR $@") if($@); for my $d (@queryData) { push(@{$data{$queryColumns[$_]}},$d->[$_]) for (0..$#$d); } } print Dumper(\%data); ######################################################################## %data=(); # sichere Variante über einen Parser: if($str =~ m!\[\@Liste\](.+)\[/Liste\]!is) { my @queryColumns; my @queryData; my $str=$1; if($str=~m!queryColumns\s*=\s*\(((?:\s*'[^']*',?\s*)+)\);!s) { @queryColumns=map{$_=~s/^\s*'//s; $_=~s/'\s*$//s; $_}split(/\s*,\s*/s,$1); } else { die("NO queryColumns Found!\n "); } if($str=~m!queryData\s*=\s*\((.+?)\);!s) { my $str=$1; while($str=~s/\n\s+\[((?:\s*'[^']*',?\s*)+)\n\s+\],?//s) { push(@queryData,[map{$_=~s/^\s*'//s; $_=~s/'\s*$//s; $_}split(/\s*,\s*/s,$1)]); } } else { die("NO queryData Found!\n "); } for my $d (@queryData) { push(@{$data{$queryColumns[$_]}},$d->[$_]) for (0..$#$d); } } print Dumper(\%data); ######################################################################## __DATA__ [@Liste] @queryColumns = ( 'objId', 'objName', 'objFullName', 'objDescription', 'objType', 'objStatus', 'objPerfStatus', ); @queryData = ( [ '1', '193.111.44.137', '193.111.44.137', '', 'Mgmt Station', 'Normal', 'Unknown', ], [ '2', '191.222.33.127', '191.222.33.127', '', 'Test 2', 'Normal', 'Unknown', ], [ '3', '176.193.1.7', '176.193.1.7', '', 'Test 3', 'Normal', 'Unknown', ], ); [/Liste] Last edited: 2011-06-28 11:46:14 +0200 (CEST) |