Thread Sub-Modul erstellen: Wie? (9 answers)
Opened by pktm at 2004-07-22 22:46

coax
 2004-07-23 01:43
#48900 #48900
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
[quote=pktm,22.07.2004, 20:46]
a) Wie nennt man sowas dann?
[/quote]
Vererbung
und das Erweitern geschieht durch das "Ueberschreiben der Methoden der Basisklasse".

Quote
b) wie geht das?


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl

use strict;
use warnings;

CMS->foo();
CMS->bar();

CMS::Galerie->foo();
CMS::Galerie->bar();

package CMS;

sub foo {print "foo von CMS\n";}

sub bar {print "bar von CMS\n";}

package CMS::Galerie;

use base qw(CMS);

sub foo {print "foo von CMS::Galerie\n";}

Quote
Dachte ich muss dafür einfach sowas hier schrieben, aber dann findet er die Methoden des Moduls CMS.pm nicht mehr:

Das passiert wenn du versuchst die geerbte Methode via der ::- statt der Pfeil-Notation aufzurufen
Code: (dl )
CMS::Galerie::bar();

Die Gruenden warum das so ist weisz ich jetzt nicht mehr genau, kann es mir aber denken.

Quote
Man muss scheinabr das Modul laden und kann dann mittels our @ISA = wq( Modul ); die Methoden einbinden.
Geschiet im Code.
Werde es mal verushcen.

Das Modul muss natuerlich vorerst geladen werden damit der Code erstmal bekannt ist.
Statt die Module dem @ISA hinzuzufuegen kannst du (wie du es schon mal stehen hattest) use base qw(Modulname) verwenden.
use base macht eigentlich auch nichts weiter als die angebenen Module einzubinden und die Modulnamen @ISA hinzuzufuegen.
Quote
Aber was hat es mit dem CMS::* auf sich?
Bedeutet das nur, dass sich das Modul im Verzeichnis CMS befindet oder hat das noch andere Wirkungen?

CMS::Galerie::foo() und Galerie::foo sind schon gewaltige Unterschiede (keine Ahnung wie ich das haette verstaendlicher schreiben sollen *g*).
,,Das perlt aber heute wieder...'' -- Dittsche

View full thread Sub-Modul erstellen: Wie?