use strict; use warnings; use Data::Dumper; # zunächst erstelle ich ein Hash mit allen Artikelbeständen my %artikel = ( 1 => { artikel_nr => 'Artikel_1', bestand => 10, }, 2 => { artikel_nr => 'Artikel_2', bestand => 20, }, ); # in Wirklichkeit füttere ich den Hash über eine Schleife, die Werte kommen aus einer Datenbank print "Inhalt von \%artikel:\n"; print Dumper ( \%artikel); print "\n\n"; # die Artikelbestände sind unterteilt in Unterbestände, sog. Chargenbestände; der Gesamtbestand (bestand) ist die Summe der Chargenbestände (c_bestand). Die Chargenbestände lese ich ebenfalls aus der Datenbank ein. Jede Charge ist durch eine ID gekennzeichnet. my %c_artikel; # nun erstelle ich einen Hash mit allen Chargenbeständen push @{ $c_artikel{ 1 } }, { c_id => 'Charge_1', c_bestand => 3, }; push @{ $c_artikel{ 1 } }, { c_id => 'Charge_2', c_bestand => 7, }; push @{ $c_artikel{ 2 } }, { c_id => 'Charge_1', c_bestand => 9, }; push @{ $c_artikel{ 2 } }, { c_id => 'Charge_2', c_bestand => 11, }; # in Wirklichkeit füttere ich den Hash über eine Schleife, die Werte kommen aus einer Datenbank print "Inhalt von \%c_artikel:\n"; print Dumper ( \%c_artikel); print "\n\n"; # alles in %artikel aufnehmen for my $key ( keys %c_artikel ) { $artikel{$key}->{ charge } = $c_artikel{$key}; } { $Data::Dumper::Sortkeys = 1; print "Neuer Inhalt von \%artikel:\n"; print Dumper ( \%artikel); print "\n\n"; }