Siechfred: Konzept der Namensräume; Global, Dynamic und Lexical Scope

Beitrag lesen

Unter kopieren verstehe ich die Neuanlage der Variablen in dem Package   m i t  dem Variablenwert

Okay, vielleicht habe ich mich da unklar ausgedrückt. Der local-Operator legt eine Sicherungskopie *des Wertes* einer globalen Variable an, damit sie in dem betroffenen Block temporär manipuliert werden kann. Endet der Block, wird die globale Variable auf ihren gesicherten Wert zurückgesetzt. Innerhalb des Blocks wird weiterhin auf die eine globale Variable zugegriffen, aber nicht auf eine echte lokale Variable! Das ist der wesentliche Unterschied: Während my eine echte lokale Variable anlegt, speichert local lediglich den *Wert* einer globalen Variable, ohne eine neue zu erzeugen.

Ich habe nochmal nachgelesen: Laut Perl-Kochbuch, Rezept 10.13, gibt es nur drei Fälle, in denen man local verwenden muss:

1. Man muss einer globalen Variable einen temporären Wert geben.
2. Man will ein lokales Datei- oder Verzeichnishandle bzw. eine lokale Funktion anlegen.
3. Man will temporär nur ein Element eines Arrays oder Hashs verändern.

In allen anderen Fällen gilt: "my statt local". Im Übrigen: Das strict-Pragma überwacht den Dynamic Scope nicht, das allein spricht schon für gegen local, wenn man es neben den o.g. Fällen anwendet.

Was heißt quasi-lokal? Wenn die Variable nur in dem Block gültig ist und nicht wie die mit "our" definierte Variablen auch außerhalb, ist dies doch echt lokal - oder nicht?

Nein, siehe hierzu:
http://perldoc.perl.org/perlsub.html#Private-Variables-via-my()
http://perldoc.perl.org/perlsub.html#Temporary-Values-via-local()

Ist Block ein anderer Begriff für Namensraum, wenn nein was hat der Block mit Namespace und Scope zu tun?

Ein Block ist ein Bündel von Anweisungen, eingeschlossen durch geschweifte Klammern.

Nach aussen und nach innen ist mir unklar.

Siehe Antwort von Patrick.

Siechfred

0 80

Frage zu packages

Connie
  • perl
  1. 0
    Patrick Andrieu
    1. 0
      Connie
      1. 0
        Connie
        1. 0
          Patrick Andrieu
          1. 0
            Struppi
            1. 0
              Patrick Andrieu
              1. 0
                Struppi
                1. 0
                  Patrick Andrieu
            2. 0
              Connie
              1. 0
                Connie
    2. 0
      Connie
    3. 6

      Konzept der Namensräume; Global, Dynamic und Lexical Scope

      Siechfred
      1. 0
        Connie
      2. 0
        Connie
        1. 0
          Patrick Andrieu
          1. 0
            Connie
            1. 0
              Patrick Andrieu
              1. 0
                Connie
                1. 0
                  Connie
                  1. 0
                    Struppi
                    1. 0
                      Connie
                      1. 0
                        Struppi
                        1. 0
                          Connie
                          1. 0
                            Struppi
                            1. 0
                              Connie
                              1. 0
                                Struppi
                                1. 0
                                  Connie
                                  1. 0
                                    Struppi
                                    1. 0
                                      Connie
                                      1. 0
                                        Struppi
                                      2. 0
                                        Struppi
                                      3. 0
                                        Patrick Andrieu
                                        1. 0
                                          Struppi
                                          1. 0
                                            Kurt
                                            1. 0
                                              Struppi
                                              1. 0
                                                Kurt
                                                1. 0
                                                  Struppi
                                                  1. 0
                                                    Kurt
                                                    1. 0
                                                      Kurt
                                                      1. 0
                                                        Thomas
                                                        1. 0
                                                          Siechfred
                                                          1. 0
                                                            Kurt
                                                            1. 0
                                                              Siechfred
                                                              1. 0
                                                                Kurt
                                                        2. 0
                                                          Kurt
                                                          1. 0
                                                            Kurt
        2. 0
          Siechfred
      3. 0
        Patrick Andrieu
        1. 0
          Kurt
      4. 0
        Kurt
        1. 0

          my erzeugt keinen Packagevariablen!

          Kurt
        2. 0
          Siechfred
          1. 0
            Siechfred
            1. 0

              Konzeption...

              Patrick Andrieu
              • menschelei
            2. 0
              Kurt
              1. 0
                Siechfred
                1. 0
                  Kurt
  2. 0
    Kurt
    1. 0
      Kurt
    2. 0
      Struppi
      1. 0
        Kurt
      2. 0
        Interessierter Leser
        1. 0
          Interessierter Leser
          1. 0

            Coping with Scoping

            Kurt
        2. 0
          Kurt
  3. 0

    Zusammenfassende Darstellung, Kritik willkommen!

    Siechfred
    1. 0
      Kurt
      1. 0
        Struppi
        1. 0
          Kurt
          1. 0
            Struppi
            1. 0
              Thomas
              1. 0
                Struppi
            2. 0
              Kurt
              1. 0
                Struppi
                1. 0

                  1 Klasse= 1 Modul ?

                  Kurt
                  1. 0
                    Struppi
      2. 0
        Siechfred
        1. 0
          Thomas
        2. 0
          Kurt