yet another useless homepage

We don't cut. We expand.

Hashes of Arrays oder Hashes of Hashes

| Keine Kommentare

In Perl zu programmieren, kann jede Menge Spaß machen. Mit einer Handvoll Befehle kommt man bereits sehr weit. Die Datenstrukturen, die ein Anfänger kennenlernt, gliedern sich in einfache Skalare (zum Beispiel ein String “Hallo Welt”), eine Liste oder Array (zum Beispiel 1. grün, 2. blau, 3. gelb) oder auch Hashes. Hashes sind im Grunde geordnete Listen, die einen Schlüssel mit einem Wert verbinden.

Der Spaß in Perl beginnt aber eigentlich erst bei komplexen Datenstrukturen, wie einer Liste von einer Liste. Angeregt von /blog/perl zwei kleine Beispiele, zunächst für ein einfaches Array of Hashes:

Listing 1: array_of_hashes.pl
#Code
0001#!/opt/local/bin/perl -w
0002 
0003use diagnostics;
0004use strict;
0005 
0006#############################################
0007# declare array of hashes
0008my @doctors = (
0009{actor => "William Hartnell",
0010years => "1963–1966"
0011},
0012{actor => "Patrick Troughton",
0013years => "1966–1969"
0014},
0015{actor => "Jon Pertwee",
0016years => "1970-1974"
0017},
0018{actor => "Tom Baker",
0019years => "1974-1981"
0020},
0021{actor => "Peter Davidson",
0022years => "1982-1984"
0023},
0024{actor => "Collin Baker",
0025years => "1984-1986"
0026},
0027{actor => "Sylvester McCoy",
0028years => "1987-1989"
0029},
0030{actor => "Paul McGann",
0031years => "1996"
0032},
0033{actor => "Christopher Eccleston",
0034years => "2005"
0035},
0036{actor => "David Tennant",
0037years => "2005-present"
0038}
0039);
0040 
0041# print the actor's name in the 10th series
0042print "$doctors[9]{actor}\n";

Code herunterladen
[Downloads: 1202]

Jetzt wird es etwas interessanter, ein Hash of Hashes:

Listing 2: hash_of_hashes.pl
#Code
0001#!/opt/local/bin/perl -w
0002 
0003use diagnostics;
0004use strict;
0005 
0006#################################################
0007# declare hash of arrays
0008my %serie = (
0009"Star Trek" =>
0010[
0011"William Shatner",
0012"Leonard Nimoy",
0013"DeForest Kelley",
0014"Nichelle Nichols",
0015"James Doohan"
0016],
0017"The Fall Guy" =>
0018[
0019"Lee Majors",
0020"Douglas Barr",
0021"Heather Thomas"
0022],
0023"The A-Team" =>
0024[
0025"George Peppard",
0026"Dwight Schultz",
0027"Mr. T",
0028"Dirk Benedict"
0029]
0030);
0031 
0032# oh no, we forgot George Takei!
0033# Push him into the array!
0034push (@{$serie{"Star Trek"}},"George Takei");
0035 
0036# print the content of this hash of arrays
0037for my $series_name ( sort keys %serie ) {
0038print "The cast of '$series_name':\n";
0039print "@{ $serie{$series_name}}\n";
0040}
0041 

Code herunterladen
[Downloads: 1014]

Update: Mehr zum Thema hier: Praktische Hashes of Arrays

Author:

Kommentare

Verfasse einen Kommentar

Pflichtfelder sind markiert *.
Textile Hilfe

*


Keine Kommentare

    Verfasse einen Kommentar

    Pflichtfelder sind markiert *.
    Textile Hilfe

    *