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

Beitrag lesen

Hallo,
sorry, aber ich habs immer noch nicht begriffen!

  
#!/usr/bin/perl -w  
use strict;  
package p1;  
my $var1 = "p1";  
print "p1:$var1\n";  
package p2;  
print "p2:$var1\n";  
package main;  
print "main:$var1\n";  

Ergebnis:
p1:p1
p2:p1
main:p1

Die lokale Variable $var1 ist deklariert im package p1 und trotzdem sichtbar im package main und sogar im package p2.
Ich hätte erwartet, dass die Variable in main und p2 nicht sichtbar ist.
Packages sollen doch dazu dienen, dass beliebieg viele Leute Routinen entwickeln,
die dann gemeinsam verwendet werden können. Nach dem obigen Ergebnis müßten sich aber
die Autoren absprechen, damit nur einer $var1 verwendet.

Patrick schrieb:
Nach außen unsichtbar bedeutet (s.o.): außerhalb des Blockes, in welchem eine my-Variable deklariert wurde, ist sie nicht »sichtbar«, Du kannst auf sie nicht zugreifen.
Nach innen: Innerhalb des Blockes kannst Du auf diese my-Variable sehr wohl zugreifen.

Wie müßte obiges Beispiel aussehen, damit $var1 in p2 und in main undefiniert ist?

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