Thread Mehrdimensionale Arrays (22 answers)
Opened by der_thomas at 2013-09-27 22:49

rosti
 2013-09-28 11:32
#170764 #170764
User since
2011-03-19
3198 Artikel
BenutzerIn
[Homepage]
user image
Mehrdimensionale Arrays sind nicht immer zweckmäßig. Für Tabellen bevorzuge ich den Slice. Das ist eine Liste mit Hash-Referenzen und eine Solche passt haargenau auf HTML::Template (falls Du die Tabelle auch mal darstellen möchtest).

Btw., DB-Abfragen mit Perl::DBI lassen sich ebenfalls so ausführen, dass ein Slice dabei herauskommt.

Und so siehts aus:
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
use strict;
use warnings;
use Data::Dumper;

my $table = [
    {
        name  => 'Rost',
        vname => 'Rolf',
        plz   => '55276',
        ort   => 'Oppenheim',
    },
    {
        name  => 'Haselhuhn',
        vname => 'Horst',
        plz   => '12345',
        ort   => 'Henneberg',
    },
];

# direkte Adressierbarkeit der Felder über Index und Feldname
$table->[1]->{plz} = 99999;
$table->[1]{plz}   = 99999; # dasselbe wie oben, der erste Pfeil reicht

print Dumper $table;


PS/Edit, Sortieren:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
# Direkte Adressierbarkeit nutzen für Sortierungen
foreach my $addr( sort{ $a->{plz} cmp $b->{plz}  } @$table ){
    printf qq(
        Name:    %s
        Vorname: %s
        Ort:     %s
        PLZ:     %s
    ), 
    $addr->{name}, $addr->{vname}, $addr->{ort}, $addr->{plz}; 
}


PSPS, Noch ne Ergänzung:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
# Hash Slice zum rausholen der Werte in der richtigen Reihenfolge
foreach my $addr( sort{ $a->{plz} cmp $b->{plz}  } @$table ){
    my %h = %{$addr};
    printf qq(
        Name:    %s
        Vorname: %s
        Ort:     %s
        PLZ:     %s
    ), @h{qw(name vname ort plz)}; 
}


Und überhaupt: Ich finde es bedauerlich, dass die Diskussion hier so sinnlos ausufert. Ich zeige Euch hier Beispiele aus meiner täglichen Praxis (die sich mehr als nur einmal bewährt haben!) und schon werde ich angefeindet. Woher kommt dieser Hass!?

Besonders unschön finde ich den Begriff "aufgeschnappt" (pq)
Das Lesen von Fachliteratur u.a. Publikationen gehört zum Handwerkszeugs eines jeden Programmierers. Es gibt auch in Perl immer wieder Neues zu entdecken, und da meine ich immer noch v5.

Mit Lernprozessen hat die Tätigkeit 'aufschnappen' herzlich wenig zu tun. Sowas passt eher in eine Stammtischrunde, wenn alle einen im Tee haben ;)
Last edited: 2013-09-28 18:30:35 +0200 (CEST)

View full thread Mehrdimensionale Arrays