Struppi: Warum .... Escape-Sequenzen

Beitrag lesen

$test = $cgi->param('test')

Ist doch ganz einfach:
Weise der Variablen $test das Ergebnis der Methode param des CGI-Objektes zu. Benutze dabei die Objektinstanz $cgi und übergib der Methode param den String 'test'.
Im Augenblick klingt für mich der obige Satz wie:
Weise der Variablen $test das Ergebnis der u1 param des u2 zu. Benutze dabei die u3 $cgi und übergib der u1 param den String 'test'.

Hier liegt evtl. ein Mißverständniss vor (wenn ich deinen Satz richtig deute), param() ist nichts weiter als eine x-beliebige Funktion innerhalb des Paketes CGI.

Du erzeugst eine Instanz von CGI durch $cgi = new CGI; dadurch kann $cgi auf alle Methoden des Paketes zugreifen. $test erhält lediglich den Rückgabewert dieser Funktion.

Mittlerweile finde ich persönlich diese Methode nicht mehr so glücklich. Da du, in einem CGI Programm, die Variabel $cgi, also die Instanz von CGI, überall mit rumschleppen musst oder Global machen musst.
Da man davon ausgehen kann, dass es nur eine einzige Instanz von CGI gibt, bzw. du eigentlich gar keine Instanz brauchst, da du die Funktionen des Moduls auch ohne Objekt benutzen kannst, verwende ich das Modul immer unmittelbar z.b. CGI::param(....)

Das heißt du musst das Modul nur einmal in deinem Hauptskript einbinden mit use CGI; und kannst dann in allen nachgeladenen Modulen auf die Funktionen CGI:: zugreifen. Das hat ausserdem den Vorteil, dass immer siehst welche Funktionen du verwendest, nämlich die aus dem Modul CGI und dir keine Gedanken mehr machen musst, ob die Instanzvariabel überall verfügbar ist.

Also, in dem Falle finde ich den Objektorientierten Ansatz überflüssig.

Gru?

???

Struppi.

--
Javascript ist toll (Perl auch!)