cgicorner.ch ¦ CGI Hilfe ¦ Knowledge Base ¦ Arbeiten mit mehrdimensionalen Hashes    
   http://www.cgicorner.ch

Main Download CGI Hilfe Knowledge Base Links Gaestebuch Witze-Bereich Sitemap Impressum

Arbeiten mit mehrdimensionalen Hashes

Wie kann ein mehrdimensionaler Hash mit Daten abgefüllt und wieder teilweise oder komplett ausgelesen werden?

Anstelle von langen Erklärungen, habe ich ein kleines Beispiel programmiert, welches anhand eines Vorratslagers zeigt, wie man den Lagerbestant eines einzelnen Artikels (Beispiel 1), einer Produktgruppe (Beispiel 2) bzw. des kompletten Lagerbestandes (Beispiel 3) auslesen kann. Ebenfalls ist sichtbar, wie der Hash abgefüllt wird.
use strict;

# Definition der Variablen
my (%vorratsLager, $tmp);


# Mehrdimensionaler Hash mit Test-Daten abfüllen
$vorratsLager{"Fruechte"}{"Aepfel"}           ="65 kg";
$vorratsLager{"Fruechte"}{"Birnen"}           ="15 kg";
$vorratsLager{"Fruechte"}{"Bananen"}          ="40 kg";
$vorratsLager{"Fruechte"}{"Kiwi"}             ="20 kg";
$vorratsLager{"Beilagen"}{"Reis"}             ="26 kg";
$vorratsLager{"Beilagen"}{"Teigwaren"}        ="18 kg";
$vorratsLager{"Beilagen"}{"Pommes-Frites"}    ="10 kg";
$vorratsLager{"Beilagen"}{"Risotto"}          ="12 kg";
$vorratsLager{"Fleisch"}{"Schweinsschnitzel"} ="21 kg";
$vorratsLager{"Fleisch"}{"Kalbsvoressen"}     ="14 kg";
$vorratsLager{"Fleisch"}{"Rindssteak"}        ="11 kg";
$vorratsLager{"Dessert"}{"Schokolade"}        ="45 kg";
$vorratsLager{"Dessert"}{"Torten"}            ="32 kg";
$vorratsLager{"Dessert"}{"Glace"}             ="19 kg";


# Beispiel 1: Ausgabe eines Wertes
print "Es sind noch ".$vorratsLager{"Dessert"}{"Glace"}." Glace an Lager\n\n\n";


# Beispiel 2: Alle Beilagen ausgeben
print "Beilagen an Lager:\n";
$tmp=$vorratsLager{"Beilagen"};
foreach (sort keys(%$tmp))
  { print " > ".$_.": ".$$tmp{$_}."\n"; }


# Beispiel 3: Ausgabe des kompletten Hashes, sortiert nach Rubrik
print "\n\nLagerbestand\n------------";
foreach (sort keys(%vorratsLager))
  {
  print "\n".$_.":\n";
  $tmp=$vorratsLager{$_};
  foreach (sort keys(%$tmp))
    { print " > ".$_.": ".$$tmp{$_}."\n"; }
  }
Das Script liefert die folgende Ausgabe:
Es sind noch 19 kg Glace an Lager


Beilagen an Lager:
 > Pommes-Frites: 10 kg
 > Reis: 26 kg
 > Risotto: 12 kg
 > Teigwaren: 18 kg


Lagerbestand
------------
Beilagen:
 > Pommes-Frites: 10 kg
 > Reis: 26 kg
 > Risotto: 12 kg
 > Teigwaren: 18 kg

Dessert:
 > Glace: 19 kg
 > Schokolade: 45 kg
 > Torten: 32 kg

Fleisch:
 > Kalbsvoressen: 14 kg
 > Rindssteak: 11 kg
 > Schweinsschnitzel: 21 kg

Fruechte:
 > Aepfel: 65 kg
 > Bananen: 40 kg
 > Birnen: 15 kg
 > Kiwi: 20 kg

Dieser Artikel wurde zugesandt von: Jürg Sommer, knowledge@cgicorner.ch



 
Druckfreundliche Version zum Anfang der Seite
Copyright (c) 2008 by cgicorner.ch
Diese Seite ist ein Teil von http://www.cgicorner.ch
URL dieser Seite: http://www.cgicorner.ch/cgi-bin/kb/kb.cgi?file=multihash.kb
Letzte Änderung: 19. Juli 2004