[Cologne-pm] sauberes/sicheres Programmieren mit strict

A. Pagaltzis pagaltzis at gmx.de
Tue Jun 17 18:02:32 CDT 2003


* Michael Lamertz <mike at lamertz.net> [2003-06-17 22:24]:
> Das Haupt-Argument gegen 'our' ist also, dass ich es doppelt
> definieren muss - unter dem Risiko, mich zu vertippen - wenn
> ich ein Package ueber mehrere Files verteilen moechte, und
> dabei auf diese Variable zugreife.
> 
> Ist das Dein Grund?

In etwa. Vor allem ist our() ja dafür gedacht, dass du sagen
kannst:

sub foo {
    our $bar;
    ...
}

und $bar dann, *obwohl* im Package vorhanden, ausserhalb von
foo() von strict angemahnt wird. Schreibe ich dann baz() und
brauche es dort, kann ich trotzdem darauf Bezug nehmen:

sub bar {
    our $bar; # <- das gleiche Package-weite $bar wie in foo()
    ...
}

Dafür ist our() eigentlich gedacht. Aber das willst du nicht
wirklich machen. Und wenn du our() nur als Ersatz für use vars
verwendest, verlierst du a) die Kompatibilität zu Perl <= 5.5
(kein grosser Verlust, aber dennoch ein unnötiger; 5.5.3 ist ja
auch immernoch *SEHR* verbreitet) und b) die zentrale
Sammelstelle für globale Deklarationen - mit use vars landen die
globalen Variablennamen an einer einzigen Stelle, mit our() sind
sie oft über den Quelltext verstreut. Klar, das ist auch nur eine
Sache der Disziplin. Aber wenn man die Disziplin hat, verwendet
man our() nur noch wie use vars..

-- 
Gruss,
Aristoteles



More information about the Cologne-pm mailing list