Thread Hash/Array aus Liste erzeugen
(8 answers)
Opened by mgsyslog at 2011-06-27 15:16
Hallo mgsyslog,
den ![]() Wenn die Daten wirklich immer so sauber geliefert werden wie im Beispiel, dann sollte die Zuweisung per eval() möglich sein. Bsp.: 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 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; #Variablen definieren (erforderlich bei strict) my @queryColumns; my @queryData; #Daten aus File (hier: s.u. ab __DATA__ ) einlesen my @data = <DATA>; #Erste und letzte Zeile entfernen (hauruck-Lösung) shift @data; pop @data; #Daten als Programmcode verarbeiten. eval("@data") or die $!; #Die Zieldatenstruktur: Ein Array of Hashes my @aoh; #Zeilenweise durch @queryData for my $i (0..$#queryData) { #Eine Tabellenzeile als Array my @rowArr = @{$queryData[$i]}; #Definiere Hash für eine Tabellenzeile my %rowHash; #Spaltenweise durch eine Tabellenzeile for my $j (0..$#rowArr) { #Spaltenname my $column = $queryColumns[$j]; #Wert my $value = $rowArr[$j]; #Zuordnung vom Wert zum Spaltenname $rowHash{$column}=$value; } #In die Zieldatenstruktur für jede Zeile ein Hashref push @aoh, \%rowHash; } print Dumper \@aoh; #Die Daten, die natürlich auch aus einem File kommen könnten __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', '193.111.44.138', '193.111.44.138', '', 'Gas Station', 'Super', 'Well known' ] ); [/Liste] Besonders solide kommt mir das aber nicht vor. Wahrscheinlich kommen noch bessere Vorschläge. Grüße payx Last edited: 2011-06-28 10:17:31 +0200 (CEST) |