Kurt: Frage zu packages

Beitrag lesen

Hallo Connie,

die kurze (grobe) Antwort ist:

du musst unterscheiden ob es sich um lexikalische Variablen oder Symboltabellenvariablen handelt, diese werden intern total unterschiedlich verwaltet!!!

Erstere - mit "my" definiert - gelten nur innerhalb eines Blockes d.h innerhalb umschließender {} und haben keinen Namespace. Diese dringen auch nicht in eingebettete Blocks ein. Vergleichbar mit "var" in Javascript.

Alle anderen sind an einem Namespace gebunden, der mittels "package" angegeben wird, default ist dabei "main::".
Deren Symboltabellen können auch mit "typeglobs" umfassend manipuliert werden.

Die Verwirrung entsteht historisch, weil es ursprünglich nur Namespaces gab und die lexikalischen Variablen später eingeführt wurden weil man mit "local" unzufrieden war.

"local"  (auch lokalglobal genannnt) überschreibt eine *globale* Variable (also namespace!) bis zum Ende des lokalen Blocks und restauriert sie dann wieder, dadurch dringt sie auch - im gegensatz zu my - in eingebettete Blocks/Routinen ein, da es sich nur um eine temporär überschriebene globale variable handelt.

Zu deinem Beispiel:
ersetze my mit our!

(our wurde eingeführt damit strict nicht meckert)

#!/usr/bin/perl -w

use strict;
print "Content-type: text/html\n\n";
my $var1 = "main";
print "main:$var1<br>";

package p1;
my $var1 = "p1";
print "p1:$var1<br>";

package p2;
my $var1 = "p2";
print "p2:$var1<br>";

package main;
print "main:$var1<br>";


>   
  
bye  
 Kurt  
  
PS: Perl ist leider keine Anfängersprache, sondern ein hochgezüchteter Alleskönner.
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