Anfängerfrage zu Packages
Conni
- perl
Hallöchen,
ich versuche mich gerade an Perl und hänge bei den Packages fest.
Folgender Code:
package Blubb;
sub new {
$zeiger={};
bless($zeiger);
}
sub schreibe {
$text = shift;
print $text;
}
$my_obj = Blubb->new();
$my_obj->schreibe("hallo welt");
Wieso ist die Ausgabe nicht "hallo welt" sondern "Blubb=HASH(0x1e1a34c)"
Komme einfach nicht dahinter.
Moin!
Wieso ist die Ausgabe nicht "hallo welt" sondern "Blubb=HASH(0x1e1a34c)"
Weil der erste Parameter die Klasse ist.
Bau ein my $class= shift; als erstes in print ein.
-- Skeeve
Moin!
Sorry! in "schreibe" natürlich!
sub schreibe {
my $class= shift;
my $text= shift;
-- Skeeve
Moin!
Sorry! in "schreibe" natürlich!
sub schreibe {
my $class= shift;
my $text= shift;-- Skeeve
Vielen Dank für die Hilfe!
Also es funktioniert zwar aber ich habe nicht verstanden wieso. Was meinst du mit: der erste Parameter ist die Klasse?
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
ich versuche mich gerade an Perl und hänge bei den Packages fest.
Als Tipp: http://perldoc.perl.org/
du hast perldoc auch bei dir auf der Festplatte, wenn du Perl Installiert hast.
Eine sehr umfangreiche Dokumentation wo alles erklärt wird. Du gehst für eine(n) Anfänger sehr weit.
Folgender Code:
package Blubb;
sub new {
$zeiger={};
bless($zeiger);
}
Vielleicht erstmal das http://perldoc.perl.org/perlboot.html
Komme einfach nicht dahinter.
Lesen, lesen.....
Struppi.
Hell-O!
Komme einfach nicht dahinter.
Ergänzend zu den bisherigen Hinweisen empfand ich seinerzeit den SELFHTML-Abschnitt Objektorientiertes Programmieren in Perl zum Einstieg in die Materie als sehr hilfreich.
Siechfred