Cruz: Anfängerfrage zu Packages

Beitrag lesen

Hallo Conni,

weisst du was objektorientierte Programmierung ist? Weisst du was der Unterschied ist zwischen einem Objekt und einem Package? Ein Package wird auch manchmal Namespace genannt. Diese Begriffe solltest du dir bestens klar machen, um wirklich zu verstehen, was in deinem Code passiert.

Trotzdem hier mal eine kurze Erklärung, vielleicht reicht es für den Anfang oder bringt dich auf die richtige Fährte.

Hier ist dein Code:

package Blubb;

sub new {
 $zeiger={};
 bless($zeiger);
}

sub schreibe {
 $text = shift;
 print $text;
}

$my_obj = Blubb->new();
$my_obj->schreibe("hallo welt");

Was du hier machst ist ein Blubb Objekt zu instantieren (eine Seele einzuhauchen, wie der "bless" Befehl so schön sagt) und dann die Methode "schreibe()" aufzurufen. Es ist nun mal Perl Konvention, dass wenn die die Methode eines Objektes aufrufst der erste Parmeter eine Referenz auf das Objekt selbst ist. In java gibt es das "this", in Perl ist es der erste Parameter.

Du könntest auch die schreibe() Routine im Package Blubb aufrufen ohne ein Blubb Objekt zu instantieren, nämlich so:

Blubb::schreibe("hello");

Dann funktioniert es wie du es erwarten würdest.

Zum Thema objektorientertes Perl empfehle ich das Buch "Object Oriented Perl" von Damien Conway.

Gruß,
Cruz