Naja, ich meinte mehr solche Sachen: Perl gibt Dir in allem viel mehr Freiheiten. Ein Objekt ist im wesentlichen eine "veredelte" (geblesste) andere Struktur (Hash, Array oder Skalar.
Du kannst Deine Klassen unheimlich dicht nach aussen machen, dichter als es z.B. unter C++ geht (schonmal
#define private public vor einem Include gesehen? ;-), aber auch viel loser.
Normalerweise kann man von außen nach belieben an die innere Struktur heran, sofern man diese nicht in den Tiefen von Closures oder auf andere Weise vergräbt. Das hat Vor- und Nachteile.
Du kannst auch alles "sauber" über Getter/Setter abhandeln. (Das würde ich auch empfehlen, für alle nicht-alpha-Klassen.)
"Private" Methoden zeichnen sich durch eine Konvention dadurhc aus, dass sie mit einem Unterstrich beginnen. Und natürlich lassen sie sich von außen aufrufen (nach dem Motto: Anwenderprogrammierer, Du siehst die Methode ist privat, Du darfst sie gerne verwenden, auf eigenes Risiko, aber komme dann nicht nach dem nächsten Versionssprung angeheult, weil Dein Programm nicht mehr läuft.).
Du kannst aber auch Methoden in "privaten" (mit my deklarierten) Funktionsreferenzen (closures) definieren. Dann kamm man sich von außen auf den Kopf stellen, aber man kommt nicht dran.
Ich finde es toll, dass es so ist, Perl lässt einem alle Freiheiten, so offen oder so restriktiv zu sein, wie es einem gefällt.
Trotzdem staunt man von Zeit zu Zeit und manchem ist das alles zu offen. Man muss damitklarkommen, aber ich finds Klasse, wie gesagt.
*Perllobpreis* ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite