Thread Hash mit weiterem Hash ergänzen (5 answers)
Opened by Stefan_S at 2018-03-06 11:26

hlubenow
 2018-03-09 18:45
#188109 #188109
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
Auch wenn's zuerst schwerfällt: Auf die Dauer ist das Problem etwas, das am besten mit Klassen gelöst werden sollte. Wie das geht, habe ich hier beschrieben. Dauert halt etwas, es zu lernen. Lohnt aber.
Beispiel (das aber nicht dafür gedacht ist, direkt in produktiv genutzte Skripte kopiert zu werden):
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
#!/usr/bin/perl

use warnings;
use strict;

package Artikel {

    sub new {
        my $classname = shift;
        my $args = {@_}; 
        my $self = {nr      => $args->{nr},
                    bestand => $args->{bestand}};
        $self->{chargen} = [];
        return bless($self, $classname);
    }

    sub addCharge {
        my $self = shift;
        my $charge = shift;
        push($self->{chargen}, $charge);
    }

    sub showChargen {
        my $self = shift;
        my @chargen = @{$self->{chargen}};
        my $i;
        if ($#chargen >= 0) {
            print "Artikel $self->{nr} hat folgende Chargen:\n\n";
            foreach $i (@chargen) {
                print "ChargenID: $i->{id}\n";
                print "Chargenbestand: $i->{bestand}\n";
                print "\n";
            }
            print "----------------------\n\n";
        }
    }
}

package Charge {

    sub new {
        my $classname = shift;
        my $args = {@_}; 
        my $self = {id      => $args->{id},
                    bestand => $args->{bestand}};
        return bless($self, $classname);
    }

}

my $artikel1 = Artikel->new(nr => 1,
                            bestand => 10);
my $artikel2 = Artikel->new(nr => 2,
                            bestand => 20);

$artikel1->addCharge(Charge->new(id => 1,
                                 bestand => 3));
$artikel1->addCharge(Charge->new(id => 2,
                                 bestand => 7));
$artikel2->addCharge(Charge->new(id => 1,
                                 bestand => 9));
$artikel2->addCharge(Charge->new(id => 2,
                                 bestand => 11));
print "\n";
$artikel1->showChargen();
$artikel2->showChargen();

Last edited: 2018-03-10 00:23:54 +0100 (CET)

View full thread Hash mit weiterem Hash ergänzen