steve01: Variabeln und Code auslagern

hallo zusammen,

ich möchte globale variablen und anweisungen auslagern welche gemeinsam genutzt werden.

datei init.pl mit z.B code:

use strict;
use CGI::Carp qw(fatalsToBrowser);

my ($gPathData,$gHits,$gHost,$gAnzReg);
my $gDB;

my $gCounter = "counter.db";

diese binde ich in haupt.pl mit dem befehl
require "init.pl" || die("can't find init, $!");
ein.

leider kann ich aber nicht auf die variablen zugreifen:

print "Content-type: text/plain", "\n\n";
print "$gCounter";

in haupt.pl liefert einen leerwert.

wenn ich die deklarierung mit my weglasse geht es. aber use strict muss ich ebenfalls kommentieren.

warumß

Steve

  1. Hi,

    ich möchte globale variablen und anweisungen auslagern welche gemeinsam genutzt werden.

    wenn ich die deklarierung mit my weglasse geht es. aber use strict muss ich ebenfalls kommentieren.

    warumß

    was macht
     my
    ?

    Was macht
     use strict;
    ?

    Was machst Du?   ;-)

    Gruss,
    Ludger

    --
    "Die SPD im Aufwind?"
    1. hi ludger,

      also schlau bin ich aus deiner antwort nicht geworden.

      bye

      steve01

      1. Hi,

        also schlau bin ich aus deiner antwort nicht geworden.

        also, Du bist verwundert, dass "ausgelagerte" Variablennamen nicht global zur Verfuegung stehen bzw. nur, wenn die nicht mit my deklariert wurden und wenn kein Gebrauch von use strict gemacht wird?

        Da ich wiederum Deine verwunderung nicht verstehe, frage ich Dich, was Du denkst, was
         my            UND
         use strict;
        so machen. Also, was machen die so?

        Gruss,
        Ludger

        --
        "Die SPD im Aufwind?"
        1. Hi Ludger,

          my definiert eine Variablen und zwar Local  ;-)

          use strict: Variablendeklaration ist erforderlich

          Ich sehe den Fehler ! Bis heute habe ich globale Vars immer ganz oben gecodet, mit my definiert und es hat geklappt.

          Wie definiert man denn richtig globale Variablen. Ich habe gerade den Befehl OUR gefunden.

          bye

          Steve01

          1. Hi,

            Wie definiert man denn richtig globale Variablen. Ich habe gerade den Befehl OUR gefunden.

            eine Perl-Variable ist erst einmal (ohne use strict;) global. Also kann man diese nur falsch deklarieren.   ;-)

            Gruss,
            Ludger

            --
            "Die SPD im Aufwind?"
  2. Hallo Steve,

    ich lagere in meinen Programmen auch die Variablen in eine extra Datei aus, die ich in mehreren Skripte benötige. Um trotzdem noch mit use strict zu arbeiten gehe ich wie folgt vor:

    Datei config/default.cfg

    $max_title_length = 70;

    -------------------------------------------

    Datei test.pl

    Konfigurationsdateien einlesen

    { package Config; do "config/default.cfg" }

    Variable ausgeben

    print $Config::max_title_length;

    -------------------------------------------

    Ich lege also in der Konfigurationsdatei alle Variablen ohne die my-Deklaration an.
    Im eigentlichen Skript wechsele ich den Namensraum (package Config;) und führe die Konfigurationsdatei aus.
    Jetzt kann ich mit der Angabe des Namesraums ($Config::...) auf alle Variablen der Konfigurationsdatei zugreigfen ohne das use strict etwas zu beanstanden hätte.

    Gruß
    Helmut Weber

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante