Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11250[/thread]

etwas für sortierfreaks



<< >> 3 Einträge, 1 Seite
mordur
 2008-02-06 10:55
#105615 #105615
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
moins,

ich habe ein Hash(oder auch Array, das kann ich ändern) :
Code: (dl )
%endpoints=('0' => 1, '1' => 1);


Und dann habe ich noch ein Datenhash.
Code: (dl )
1
2
3
4
5
6
7
%daten=(
'01' => { '01' => '0' ,'02' => 'udp', '03' => 'test' },
'02' => {'01' => '1', '02' => 'tcp', '03' => 'bla },
'03' => { '01' => '1' ,'02' => 'dns', '03' => 'dns' },
'04' => {'01' => '0', '02' => 'dhcp', '03' => '67'},

);


Die Daten möchte ich nun in Tabellen ausgeben, und zwar so:
Der Schluessel '01' in jedem Subhash bezeichnet einen Endpoint. JEder Endpoint soll einen eigene Tabelle bekommen.
endpoint 0
-----------
Index | Protokoll | Bemerkung
01 | udp | test
04 | dhcp | 67

---------------------------------
endpoint 1
-----------
Index | Protokoll | Bemerkung
01 | tcp | bla
03 | dns | dns

---------------------------------

Man kann also jedes Hashelement als Zeile betrachten und jedes Unterelement als Spaltenwert. Das Ganze soll nun nach dem Wert der ersten Spalte aufgetrennt und in Tabellen geschrieben werden.
Habe da jetzt erst mal keinen Plan.
Taulmarill
 2008-02-06 11:32
#105617 #105617
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Ich würde mir %daten erst einmal folgendermaßen umsortieren. Die Ausgabe sollte dann kein Problem mehr sein:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
my %sortiert;
for my $key ( keys %daten ) {
    $sortiert{ $daten{$key}->{'01'} }->{$key} = {
        protokoll => $daten{$key}->{'02'},
        bemerkung => $daten{$key}->{'03'},
    }
}
use Data::Dumper;
print Dumper \%sortiert;

gibt aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$VAR1 = {
'1' => {
'03' => {
'protokoll' => 'dns',
'bemerkung' => 'dns'
},
'02' => {
'protokoll' => 'tcp',
'bemerkung' => 'bla'
}
},
'0' => {
'01' => {
'protokoll' => 'udp',
'bemerkung' => 'test'
},
'04' => {
'protokoll' => 'dhcp',
'bemerkung' => '67'
}
}
};
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
mordur
 2008-02-06 12:04
#105619 #105619
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
Danke fuer den Ansatz.
So hat es geklappt.
<< >> 3 Einträge, 1 Seite



View all threads created 2008-02-06 10:55.