Ein konkretes Beispiel. im index.php ist ein leere string Variable $title für den Titel einer Seite im <head>-Bereich. Je nach Seitefragment das im index.php geladen wird verändert sich der Titel über die Variable $title = "home" oder so.
Betrachte eine Seite als Object mit Attributen (title, descr,...):
<!-- title=Eine unglaubliche UFO Beobachtung am Himmel -->
<!-- descr=Ein astronomisches Ereignis was bis heute ungeklärt ist -->
<!-- parent=/tunguska -->
<!-- interface=xmonth -->
<!-- year=1969 -->
<!-- month=6 -->
<p> Text text....
Dieser Seite ist in der Routing Table ein URL zugeordnet und dieser ist an eine Subklasse gebunden. Damit ist der URL valide und die Seite wird ausgeliefert. Title und Descr werden an der richtigen Stelle ins Template gepflanzt, dafür sorgt das in der Basisklasse aufgebaute Rahmenwerk, was Methoden aufruft.
Über das Attribut interface=xmonth kriegt die Seite einen Monat als Tabelle mit Links zum nächsten Monat oder vorherigen Monat. Beim Klick haben wir einen Parameter im Request und was in dem Fall passieren soll, wird in einer Methode geregelt, welche ebenfalls das Interface mitbringt (vereinfacht):
sub control{
my $self = shift;
$self->eav('title', 'Neuer Titel wird vergeben');
}
Interessant ist hier die Methode eav() welche die Basisklasse definiert. Der Funktionsname steht für Entity, Attribute, Value und diese Methode ist der Accessor (get/set) für jedes beliebige Attribut einer Response-Seite.
Fazit: Nimm Dein Anliegen zum Anlass über den Sinn und Zweck einer objektorientierten Herangehensweise nachzudenken.