Thread 3-dimensionales Array
(8 answers)
Opened by weperl at 2007-07-13 16:38
Beispiel für ein dreidimensonales Array.
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; # meine (sehr) kleine Buchverwaltung my @buecher=(); sub add_buch($$) { my ($autor,$titel)=@_; # Bitte nur Strings und anonyme Arrays: return -1 if( ref($autor) ne '' and ref($autor) ne 'ARRAY' ); # Bitte nur Strigs als Buchtitel: return -1 if(ref($titel) ne ''); # Das Buch hinzufügen push(@buecher,[$autor,$titel]); # die ID des Buches Zurückliefern my $refid=$#buecher; return $refid; } sub get_titel($) { my $refid=shift(@_); return $buecher[$refid][1]; } sub get_autor($) { my $refid=shift(@_); # Bibt es mehrer Autoren?-->; Der eintrag ist ein Array if(ref($buecher[$refid][0]) eq 'ARRAY') { return $buecher[$refid][0][0]; } else { return $buecher[$refid][0]; } } sub get_coautoren($) { my $refid=shift(@_); # Bibt es mehrer Autoren?-->; Der eintrag ist ein Array if(ref($buecher[$refid][0]) eq 'ARRAY') { my @coautoren=@{$buecher[$refid][0]}; shift(@coautoren); # der erste Eintrag ist der Autor return join(',',@coautoren); } else { return 'keine Eingetragen'; } } # ein Buch mit Titel und Autor hinzufügen: my $id_a=&add_buch('Lois McMaster', 'Cetaganda'); # Da kommt ein Zweidimensionales Array heraus... # Ein Buch mit Titel, Autor udn Coautoren hinzufügen: my $id_b=&add_buch(['Terry Patchett','Ian Stewart','Jack Cohen'],'Die Gelehrten der Scheibenwelt'); # Das anonyme Aarray mit den Autornamen macht das Array dreidimensional # das Array siht nun so aus: print "-"x20,"\n"; print "Struktur:\n".Dumper(\@buecher)."\n"; print "-"x20,"\n"; # und nun die Ausgaben: print "-"x20,"\n"; print " Buch: ".get_titel($id_a)."\n Autor: ".get_autor($id_a)."\n Coautor(en): ".get_coautoren($id_a)."\n"; print "-"x20,"\n"; print " Buch: ".get_titel($id_b)."\n Autor: ".get_autor($id_b)."\n Coautor(en): ".get_coautoren($id_b)."\n"; print "-"x20,"\n"; Ausgabe: Code: (dl
)
1 -------------------- |