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:
| # | Code |
|---|---|
| 0001 | #!/opt/local/bin/perl -w |
| 0002 | |
| 0003 | use diagnostics; |
| 0004 | use strict; |
| 0005 | |
| 0006 | ############################################# |
| 0007 | # declare array of hashes |
| 0008 | my @doctors = ( |
| 0009 | {actor => "William Hartnell", |
| 0010 | years => "1963–1966" |
| 0011 | }, |
| 0012 | {actor => "Patrick Troughton", |
| 0013 | years => "1966–1969" |
| 0014 | }, |
| 0015 | {actor => "Jon Pertwee", |
| 0016 | years => "1970-1974" |
| 0017 | }, |
| 0018 | {actor => "Tom Baker", |
| 0019 | years => "1974-1981" |
| 0020 | }, |
| 0021 | {actor => "Peter Davidson", |
| 0022 | years => "1982-1984" |
| 0023 | }, |
| 0024 | {actor => "Collin Baker", |
| 0025 | years => "1984-1986" |
| 0026 | }, |
| 0027 | {actor => "Sylvester McCoy", |
| 0028 | years => "1987-1989" |
| 0029 | }, |
| 0030 | {actor => "Paul McGann", |
| 0031 | years => "1996" |
| 0032 | }, |
| 0033 | {actor => "Christopher Eccleston", |
| 0034 | years => "2005" |
| 0035 | }, |
| 0036 | {actor => "David Tennant", |
| 0037 | years => "2005-present" |
| 0038 | } |
| 0039 | ); |
| 0040 | |
| 0041 | # print the actor's name in the 10th series |
| 0042 | print "$doctors[9]{actor}\n"; |
Jetzt wird es etwas interessanter, ein Hash of Hashes:
| # | Code |
|---|---|
| 0001 | #!/opt/local/bin/perl -w |
| 0002 | |
| 0003 | use diagnostics; |
| 0004 | use strict; |
| 0005 | |
| 0006 | ################################################# |
| 0007 | # declare hash of arrays |
| 0008 | my %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! |
| 0034 | push (@{$serie{"Star Trek"}},"George Takei"); |
| 0035 | |
| 0036 | # print the content of this hash of arrays |
| 0037 | for my $series_name ( sort keys %serie ) { |
| 0038 | print "The cast of '$series_name':\n"; |
| 0039 | print "@{ $serie{$series_name}}\n"; |
| 0040 | } |
| 0041 |
Update: Mehr zum Thema hier: Praktische Hashes of Arrays

Keine Kommentare
Keine Kommentare→