[Cologne-pm] sauberes/sicheres Programmieren mit strict

Michael Lamertz mike at lamertz.net
Wed Jun 18 05:52:50 CDT 2003


On Wed, Jun 18, 2003 at 12:03:21PM +0200, Robert Meiser wrote:
> mea culpa mea culpa,
> Bitte vielmals um Entschuldigung für die unqualifizierte Mail. Natürlich
> hat Christian recht.

Fuer sowar muss man sich nicht entschuldigen.  Dafuer sind wir ja alle
hier.

Im Grunde ist das Scoping ganz einfach.  Die umschliessenden Klammern
sind immer die Grenze fuer 'my'.  Auf File-Ebene musst Du Dir die
Klammern einfach als die Dateigrenzen vorstellen, und dann bist Du auch
schon da.

Die Klammerregeln bei 'our' sind vergleichbar mit denen von 'my' -
obwohl die Daten von aussen sichtbar sind - , aber da gibt es ein paar
fiese Quirks, z.B.

    ---------- snip ----------
    sub bla1 { our $our = 42; }
    sub bla2 { print "our: $our\n"; }

    bla1();
    bla2();
    ---------- snip ----------

gibt '42' aus, was ich *wirklich* eklig finde.  Im Grunde scheint 'our'
also sowas wie Python's 'global' zu sein.  Ursache hierfuer ist dieser
kleine Satz in der Doku:

    "An "our" declaration declares a global variable that will be
    visible across its entire lexi- cal scope"

Das heisst, dass die von 'our' definierte Variable eine echte Globale
ist, und nicht innerhalb des Scopes erzeugt wird, wie das bei 'my' der
Fall ist.

Wenn ich sowas wollte, dann wuerde ich die Variable auf File-Scope
definieren.  Wieso man die aktuelle Implementation gewaehlt hat ist mir
nicht klar.

-- 
	    Well, then let's give that Java-Wussie a beating... (me)

Michael Lamertz                        |     +49 2234 204947 / +49 171 6900 310
Sandstr. 122                           |                       mike at lamertz.net
50226 Frechen                          |                 http://www.lamertz.net
Germany                                |               http://www.perl-ronin.de 



More information about the Cologne-pm mailing list