Thread private/public subs in modules (14 answers)
Opened by burnersk at 2008-12-13 16:01

Linuxer
 2008-12-13 16:27
#117165 #117165
User since
2006-01-27
3871 Artikel
HausmeisterIn

user image
Hi,

Methoden, deren Name mit _ beginnt, sind privat.
Es gibt da quasi eine "Absprache", dass solche Methoden nicht von ausserhalb aufgerufen werden.
Diese Benennung hindert den User aber nicht daran, trotzdem $testhandle->_private() aufzurufen. Wenn er das aber tut, ist er selber schuld und benutzt das Modul nicht so, wie es benutzt werden sollte.


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package foo;

sub new {
 # ...
}

sub public {
  my ( $self ) = @_;
  $self->_private();
}

sub _private {
  my ( $self ) = @_;
  $self->_other_private_stuff();
}

# ...



In "Programming Perl, 3rd Edition, Chapter 12.5" findet sich eine Beschreibung, wie man private Methoden realisieren kann, die nicht von aussen direkt angesprochen werden können.
I.d.R. ist diese Art und Weise aber zuviel des Guten.

edit: Link nach Hinweis von LanX- entfernt.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Antworten mit Zitat

View full thread private/public subs in modules