Struppi: Parameterübergabe

Beitrag lesen

Habe mal angefangen mich in OOP einzulesen.
Dabei habe ich mit der Modultechnik begonnen.

Das ist natürlich der richtige Weg, aber hat erstmal nichts mit OOP zu tun. Trotzdem musst du Wissen wie man mit packages umgeht.

Dabei ist mir folgendes aufgefallen.
In vielen Beispielen werden in der EXPORT-Anweisung zahlreiche Variablen angegeben, die im rufenden Programm gar nicht angesprochen werden.
Ist dies dann sinnvoll?

Kommt darauf an, viele CPAN Module haben nur eine kleine funktionalität und werden i.d.R. nicht OOP eingesetzt, d.h. sie werden eingebunden und exportieren, entweder per default oder bei Bedarf, bestimmte Funktionen oder Variabeln, das ist sinnvoll. Du kennst das vielleicht vom CGI Modul, wo du bestimmte Gruppen von Funktionen exportieren kannst (z.b. :standard). Ist das Modul größer, sollte man aufpassen, den man "verschmutzt" sich damit sein Namensraum und bekommt evtl. Konflikte mit den Namen der eigenen Funktionen oder Variabeln.

(Es besteht doch die Gefahr, dass Variablen der Unterroutine versehentlich geändert werden).

Wenn Variabeln exportiert werden, dann soll das ja so sein, dass du die Kontrolle über diese bekommst, um sie mit deinen Werten zu füllen.

Diese zahlreichen Angaben wohl deshalb, weil andere rufenden Programme andere Variablen benötigen. Aber kann man es dann nicht anders machen?

Natürlich kann man das anders machen, in dem man wirklich OOP arbeitet. Perl bietet dir in dieser Hinsicht erhebliche Freiheiten, es gibt z.b. keine echten privaten Variabeln (man kann diese aber durchaus auch erzeugen).

Wie werden die exportierten Variablen eigentlich bezeichnet?
Sind sie global (da in Haupt- und Unterprogramm bekannt)?

Nein global wären sie, wenn sie in allen Modulen/packages bekannt werden. Aber wie man sie explizit nennt weiß ich nicht.

Du hast aber auch gesehen dass es unterschiedliche Möglichkeiten gibt zu Exportieren? Entweder du Export immer oder nur auf Wunsch.

Aber im Grunde kann man dir nicht wirklich konkret helfen, das was Cheatah dir gesagt hat ist so ziemlich auch mein erster Gedanken gewesen, aber um konkreter zu werden, müßte man mehr über den Kontext Wissen.

Struppi.