Thread 3-dimensionales Array (8 answers)
Opened by weperl at 2007-07-13 16:38

topeg
 2007-07-13 22:38
#78460 #78460
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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
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
--------------------
Struktur:
$VAR1 = [
[
'Lois McMaster',
'Cetaganda'
],
[
[
'Terry Patchett',
'Ian Stewart',
'Jack Cohen'
],
'Die Gelehrten der Scheibenwelt'
]
];

--------------------
--------------------
Buch: Cetaganda
Autor: Lois McMaster
Coautor(en): keine Eingetragen
--------------------
Buch: Die Gelehrten der Scheibenwelt
Autor: Terry Patchett
Coautor(en): Ian Stewart,Jack Cohen
--------------------

View full thread 3-dimensionales Array