Hash-Variable als Parameter für Subroutine
Wie kann ich einer Subroutine einen Hash als Parameter übergeben?
Das folgende Beispiel definiert zuerst zwei Hashes und gibt mit einer allgemeinen Funktion die entprechendesn Hashes aus. Dabei wird der Name des Hashes als Parameter referenziert (\%hashname).
#!/usr/bin/perl
my (%farben, %formen);
%farben=("Orange"=>"orange", "Zitrone"=>"gelb", "Erdbeere"=>"rot", "Gras"=>"gruen", "Holz"=>"braun");
%formen=("Ball"=>"rund", "Schachtel"=>"rechteckig", "Wuerfel"=>"quadratisch", "Birne"=>"oval");
&printHash("Farben von Objekten",\%farben);
&printHash("Formen von Objekten",\%formen);
sub printHash {
my $title=$_[0]; # 1. Argument ist Titel
my %hash=%{$_[1]}; # 2. Argument enthält Hash
print "Titel: $title\n"; # Titel ausgeben
foreach (sort keys(%hash)) { # Hash sortieren und jedes Element einzeln ausgeben
printf(" %-10.10s -> %-10.10s\n", $_, $hash{$_});
}
}
Autor: Jürg Sommer, knowledge@cgicorner.ch
[ zurück ]