Kurt: Zusammenfassende Darstellung, Kritik willkommen!

Beitrag lesen

Hi

Ein Anfänger sollte erst "my" und "our" begriffen haben, bevor er anfängt mehrere "package" in einem File oder "local" zu benutzen.

Bei local stimmt ich dir zu, aber mehrere packages in einem File sind nicht ratsam.

Bei OOP schon, man sollte halt die packages in Blöcke klammern!!!

Aber wir sind uns einig dass man sich bei Deklarationen auf my und our beschränken sollte.

Außerdem brauchst du "our" oder "use vars" wenn du unter "use strict" Packagevariablen nutzen willst.

use var sollte vermieden werden.

schon klar, aber es sollte auch klar sein warum: weil "our" den gleichen Gültigkeitbereich hat wie "my" d.h. Blockscopes respektiert. "use vars" gilt fürs ganze Package und ignoriert die Klammerungsebenen der Blocks.

Auch "global" ist etwas missverständlich...folgendes Beispiel zeigt dass man mit "my" sehr wohl (File-)globale Variablen deklarieren kann,

Mit my deklarierte Variabeln sind immer im ganzen File global wenn sie nicht in einem Block deklariert sind.

Das ist ja klar! Schau dir die Antwort von Siechfred an, der begriff "global" sollte erstmal vermieden werden. Privat vs. Öffentlich sowie Blockbasierter Geltungsbereich (Blockscope) bringts auf den richtigen Nenner.

use vars qw($vars1 $vars3);

Dafür solltest du our verwenden.

tatsächlich? :)

Ausgabe mit use strict

Global symbol "$my2" requires explicit package name at /tmp/tst.pl line 17.

Global symbol "$our2" requires explicit package name at /tmp/tst.pl line 18.

Global symbol "$vars2" requires explicit package name at /tmp/tst.pl line 19.

Wenn du die deklaration des Subs hinter der Variabelndeklaration plazierst, dann läuft das auch unter strict.

Schön das du meine Demo zu interpretieren verstehst. :)

Bye Kurt

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