#!/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";