Siechfred: Object / Arrays

Beitrag lesen

Mein Problem ist jedoch, dass ich nicht dahinter komme, wie ich ein Objekt erstelle, welches ein Array als "Membervariable" hat.

Ein Objekt ist zunächst nichts anderes als eine Hashreferenz, die mittels bless an ein Objekt gebunden wird. Lies dir hierzu bitte perlref durch, um den Aufbau zu verstehen. Mal ein simples Beispiel, das es verdeutlicht:

package MyArray;  
  
sub new {  
  # Objektname  
  my $pkg = shift;  
  # Hashreferenz mit einer  
  # Arrayreferenz als einziges Element  
  my $ref = { myArray => [] };  
  # Binde die Referenz an den Objektnamen  
  return bless $ref, $pkg;  
}  
  
sub addElement {  
  my $obj = shift;  
  # hinzuzufuegendes Element  
  my $elm = shift;  
  # Element hinzufuegen  
  push @{$obj->{myArray}}, $elm;  
}  
  
sub getElement {  
  my $obj = shift;  
  # Indexnummer des gesuchten Elements  
  my $index = shift;  
  # Inhalt zurueckgeben oder  
  # undef, wenn Element nicht existiert  
  return $obj->{myArray}->[$index] || undef;  
}

Im Einsatz:

use strict;  
use diagnostics;  
use MyArray;  
  
# Objektinstanz  
my $arr = MyArray->new;  
# Hinzufuegen von zwei Elementen  
$arr->addElement('foo');  
$arr->addElement('bar');  
# Ausgabe des 2. Elements  
print $arr->getElement(1) || 'Kein Element';

Ich hoffe, dass es so verständlich ist, ansonsten frage nochmal nach.

Siechfred

--
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.