Thread static variable (24 answers)
Opened by #Kein Kommentar at 2008-02-03 18:46

murphy
 2008-02-04 16:00
#105549 #105549
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
betterworld+2008-02-03 21:04:35--
[...]
Das nutzt ein "Feature" aus, was die meiste Zeit eigentlich nur stoerend auffaellt, und zwar, dass my-Variablen in inneren Funktionen zu so einer Art State-Variablen werden.


In Anbetracht der Tatsache, dass my genau jedesmal wenn es zur Laufzeit angetroffen wird eine neue "Instanz" der lexikalischen Variablen erzeugt, ist das doch das einzig logische Verhalten.

Wo dieses Feature störend sein sollte, kann ich mir eigentlich nicht vorstellen -- wüsstest Du da ein Beispiel?

edit: Hmm, in Kombination mit dem flachen Namensraum für Subroutinen verhält sich Perl natürlich etwas merkwürdig, wenn man so etwas tut:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use 5.010;
use strict;
use warnings;

sub outer() {
  my $state = 'outer called';
  sub inner() {
    say 'my state is: ', $state // 'uninitialized';
    $state = 'inner called'
  }
}

inner();
inner();

outer();
inner();
inner();


Allerdings erzeugt dieser Code auch eine aussagekräftige Warnung.
When C++ is your hammer, every problem looks like your thumb.

View full thread static variable