Dann verstehe ich unter dynamischen Scoping wahrscheinlich was Anderes. Auf jeden Fall hat das was
local
macht nichts damit zu tun, daß Informationen erst zur Laufzeit eintreffen.Statisch und dynamisch sind duale Begriffe, die in der Programmierung immer wieder auftreten. Statisch bedeutet fast immer "zur Compilezeit" oder "zur Entwicklungszeit".
Nein. Statisch hat mit Laufzeit überhaupt nichts zu tun sondern mit dem Verhalten. So verhalten sich Klassenvariablen per se statisch. In PHP ist es sogar üblich, Klassenfunktionen als statische Funktionen zu bezeichnen, eben weil sie sich statisch verhalten.
Das Schlüsselwort state
(static) kam übrigens mit Perl v5.10 aber statisches Verhalten gibt es auch ohne `state´.
Anwendungsbeispiel:
use strict;
use warnings;
use v5.10;
print cnt(), "\n" for 1..10;
sub cnt{
state $c = 0;
++$c;
}
Das gibt aus
1
2
3
4
5
6
7
8
9
10
Dynamischer Scope: Mit local $/ = undef
wird der Wert der bisher in $/
stand, in einem dynamisch hinzuglinkten Scope gesichert. Der neue Wert, in diesem Fall undef
gilt nur im aktuellen Block und wenn der verlassen wird, ist wieder der alte Wert gültig. Das steht aber auch alles in der Dokumentation.
MfG