Thread Seiteneffekt von our (11 answers)
Opened by GwenDragon/Linux at 2018-07-02 16:05

GwenDragon
 2018-07-02 08:59
#188603 #188603
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Ich hatte mal gelernt, dass Package-Variablen, die von Außen referenziert werden sollen, mit our deklariert werden. Und gedacht, dass diese auch nur einen Geltungsbereich innerhalb der Package-Deklaration haben. Und gedacht, dass alles außerhalb einer package automatisch main:: ist.

Anstatt
Code (perl): (dl )
1
2
3
4
5
package A;
our $test = 42;
say ${A::test};
1;
say $test;

sollte es wohl
Code (perl): (dl )
1
2
3
4
5
6
7
8
use strict; 
use 5.010; 
package A {
our $test = 42;
say ${A::test};
1;
}
say $test;
sein.

Früher hatte ich use vars verwendet um nur im Package Variablen zu deklarieren, aber das ist ja eigentlich deprecated, oder?
Das ist wohl der feine Unterschied, von use vars qw(…) und our verwendet werden sollte.

Fallstrick. :(
Wäre interessant zu wissen ob es mehr Leute gibt, die our verwenden, und aus Versehen so falsch wie das meiner Frage.
Möglicherweise ist mir das nie aufgefallen, weil in üblicherweise packages in Dateien liegen und deswegen die Variablen Datei-lokal deklariert sind.

Bin ich nur diejenige, die das nicht richtig verstanden hat mit package?
Oder geht es euch auch so?
Last edited: 2018-07-02 09:27:26 +0200 (CEST)

View full thread Seiteneffekt von our