BoNeSpiRit: Skript zum aendern von Variablen

Hallo,

ich habs mit der Suche probiert, aber leider nix passendes gefunden...
Mein Problem ist folgendes:
Ich habe mehrere Skripte mit zum Beispiel Variable $X.
Nun moechte ich mir ein Skript basteln das Variable $X aendert.
Ich weiss, dass ich ganz einfach in jedem Skript einfach auf ein Modul verweisen koennte das diese Variablen exportiert, aber das kann ich aus anderen Gruenden nicht machen.
Kennt da jemand eine Moeglichkeit?

Gruesse,
BoNeSpiRit

  1. Mein Problem ist folgendes:
    Ich habe mehrere Skripte mit zum Beispiel Variable $X.

    Also: my $X = 0;

    Nun moechte ich mir ein Skript basteln das Variable $X aendert.

    Hier ist es: $X = 1;

    Ich weiss, dass ich ganz einfach in jedem Skript einfach auf ein Modul verweisen koennte das diese Variablen exportiert, aber das kann ich aus anderen Gruenden nicht machen.

    Was für ein Modul? Um die Variabel $X zu ändern benötigst du kein Modul.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Mein Problem ist folgendes:
      Ich habe mehrere Skripte mit zum Beispiel Variable $X.

      Also: my $X = 0;

      Nun moechte ich mir ein Skript basteln das Variable $X aendert.

      Hier ist es: $X = 1;

      Ich glaube, er meint (man beachte konjunktiv ;-) er hat in den Skripten "$X" stehen und möchte daraus ein "$Y" machen.

      also

      cat my_skript | sed 's/$X/$Y/g' > neues_skript

      Gruß

      Hans

      1. Hier ist es: $X = 1;

        Ich glaube, er meint (man beachte konjunktiv ;-) er hat in den Skripten "$X" stehen und möchte daraus ein "$Y" machen.

        ich glaube, er weiß nicht was er meint, daher mein etwas sinnloses "Skript"

        cat my_skript | sed 's/$X/$Y/g' > neues_skript

        du weißt mehr als ich, d.h. er nutzt Linux und möchte alle Bezeichner die mit ein $X enthalten in $Y ändern?
        Ich weiß ja nicht ob's das ist. Aber du hast natürlich recht, es könnte sein ;-)

        Struppi.

        --
        Javascript ist toll (Perl auch!)
      2. Mein Problem ist folgendes:
        Ich habe mehrere Skripte mit zum Beispiel Variable $X.

        Also: my $X = 0;

        Nun moechte ich mir ein Skript basteln das Variable $X aendert.

        Hier ist es: $X = 1;

        Ich glaube, er meint (man beachte konjunktiv ;-) er hat in den Skripten "$X" stehen und möchte daraus ein "$Y" machen.

        also

        cat my_skript | sed 's/$X/$Y/g' > neues_skript

        Gruß

        Hans

        Da hab ich mich missverstaendlich ausgedrueckt...
        Ein kleines Beispiel:
        source.pl hat Variable $X mit Wert bla
        change.pl aendert diesen Wert in source.pl, aber ohne, dass ein neues script erstellt wird oder auf eine andere datei mit vordefinierten Werten zugegriffen wird...
        Die Moeglichkeit von Hans ist natuerlich nicht schlecht, mir gefaellt es zwar nicht eine neue Datei zu erstellen, bzw. ich koennte ja auch die alte ueberschreiben, aber ist erstmal ne Loesung. Danke.
        Schoener waere es natuerlich wenn ich perl dazu bringen koennte diese Variable $X mit dem neuen Wert einfach zu uebernehmen (ohne ARGS ;-) )

        Gruesse,
        BoNeSpiRit

        1. Da hab ich mich missverstaendlich ausgedrueckt...

          ziemlich.

          Ein kleines Beispiel:
          source.pl hat Variable $X mit Wert bla
          change.pl aendert diesen Wert in source.pl, aber ohne, dass ein neues script erstellt wird oder auf eine andere datei mit vordefinierten Werten zugegriffen wird...

          Da fehlt immer noch alles an Infos die man bräuchte um dir zu helfen. Was haben source.pl und change.pl miteinander zu tun? Willst du den Quelltext ändern oder binden die Module sich irgendwie gegenseitig ein und wie welchen package Namen werden verwendet, werden welche verwendet? benutzt du use strict? wird die Variabel exportiert? Mit Exporter oder wie? usw. usf.

          Struppi.

          --
          Javascript ist toll (Perl auch!)
          1. Da hab ich mich missverstaendlich ausgedrueckt...

            ziemlich.

            Ein kleines Beispiel:
            source.pl hat Variable $X mit Wert bla
            change.pl aendert diesen Wert in source.pl, aber ohne, dass ein neues script erstellt wird oder auf eine andere datei mit vordefinierten Werten zugegriffen wird...

            Da fehlt immer noch alles an Infos die man bräuchte um dir zu helfen. Was haben source.pl und change.pl miteinander zu tun? Willst du den Quelltext ändern oder binden die Module sich irgendwie gegenseitig ein und wie welchen package Namen werden verwendet, werden welche verwendet? benutzt du use strict? wird die Variabel exportiert? Mit Exporter oder wie? usw. usf.

            Struppi.

            genau das eben alles nicht, das soll unwichtig sein...
            die beiden haben nichts miteinander zu tun. source ist nen skript aus meinem package und nur nen beispiel...
            in wirklichkeit habe in meinem package ca 20 skripte fuer verschiedenste vorhersagen und db zugriffe, wobei eben einige ne bestimmte variable haben die ich mit hilfe eines skriptes automatisch beim build des packages aendern will. alles simpel und vollkommen unabhaengig voneinander.
            use strict, klar das ist standard. exportiert? ja im prinzip ist das mein ziel, aber eben ohne sie importieren zu muessen.

            gruss

            1. genau das eben alles nicht, das soll unwichtig sein...

              Könntest du die Fragen auch beantworten, so das man aus den Antworten versteht WAS du willst.

              die beiden haben nichts miteinander zu tun. source ist nen skript aus meinem package und nur nen beispiel...

              Mir ist klar das das ein Beispiel war.

              in wirklichkeit habe in meinem package ca 20 skripte fuer verschiedenste vorhersagen und db zugriffe, wobei eben einige ne bestimmte variable haben die ich mit hilfe eines skriptes automatisch beim build des packages aendern will. alles simpel und vollkommen unabhaengig voneinander.

              Tut mir leid, das verstehe ich nicht. Ein package ist ein Namensraum mit evtl. mehreren Modulen, was in dem zusmamenhang 20 Skripte bedeutet ist nicht klar, meinst du 20 Module?
              Was heißt einige haben eine bestimmte Variabel? Was sollen wir mit so einer Aussage anfangen? Ist das eine package Variabel ist sie lokal oder im Namensraum deklariert?
              was heißt build? was heißt automatisch ändern?
              Ich finde an den Erklärungen nichts simpel.

              use strict, klar das ist standard. exportiert? ja im prinzip ist das mein ziel, aber eben ohne sie importieren zu muessen.

              Du kanst nichts exportieren ohne zu importieren. Ich bin mir nicht sicher ob du wirklich weißt was du willst, auf jeden Fall geht es aus deinen bisherigen Erläuterungen nicht hervor.

              Struppi.

              --
              Javascript ist toll (Perl auch!)
              1. genau das eben alles nicht, das soll unwichtig sein...

                Könntest du die Fragen auch beantworten, so das man aus den Antworten versteht WAS du willst.

                die beiden haben nichts miteinander zu tun. source ist nen skript aus meinem package und nur nen beispiel...

                Mir ist klar das das ein Beispiel war.

                in wirklichkeit habe in meinem package ca 20 skripte fuer verschiedenste vorhersagen und db zugriffe, wobei eben einige ne bestimmte variable haben die ich mit hilfe eines skriptes automatisch beim build des packages aendern will. alles simpel und vollkommen unabhaengig voneinander.

                Tut mir leid, das verstehe ich nicht. Ein package ist ein Namensraum mit evtl. mehreren Modulen, was in dem zusmamenhang 20 Skripte bedeutet ist nicht klar, meinst du 20 Module?
                Was heißt einige haben eine bestimmte Variabel? Was sollen wir mit so einer Aussage anfangen? Ist das eine package Variabel ist sie lokal oder im Namensraum deklariert?
                was heißt build? was heißt automatisch ändern?
                Ich finde an den Erklärungen nichts simpel.

                use strict, klar das ist standard. exportiert? ja im prinzip ist das mein ziel, aber eben ohne sie importieren zu muessen.

                Du kanst nichts exportieren ohne zu importieren. Ich bin mir nicht sicher ob du wirklich weißt was du willst, auf jeden Fall geht es aus deinen bisherigen Erläuterungen nicht hervor.

                Struppi.

                hmm... na gut, wenn du das sagst. ist ja ok, wenn du mich nicht verstehst, andere wissen was ich meine oder haben eine ungefaehre ahnung, zumindest versuchen sie zu helfen und kommentieren nicht nur die formulierung. Weiss nicht warum du dich so aufregst. fuer andere reichte es aus um mir weiter zu helfen, denen danke ich hiermit nochmals.
                ich will deine postings auch nicht weiter kommentieren, aber vielleicht waere es gut wenn du beim naechsten mal erst versuchst zu verstehen was das problem sein koennte und wenn de es nicht verstehst dann es einfach laesst etwas zu schreiben.
                danke fuer deine zeit die du aufgewendet hast um das problem zu verstehen, nur eben die antworten waren nicht wirklich konstruktiv.

                gruss
                BoNeSpiRit

                1. hmm... na gut, wenn du das sagst. ist ja ok, wenn du mich nicht verstehst, andere wissen was ich meine oder haben eine ungefaehre ahnung, zumindest versuchen sie zu helfen und kommentieren nicht nur die formulierung. Weiss nicht warum du dich so aufregst. fuer andere reichte es aus um mir weiter zu helfen, denen danke ich hiermit nochmals.

                  Ich reg mich in keinster Weise auf sondern versuch dir zu helfen. Sind meine Fragen so unverständlich? Ich versuche lediglich Licht ins dunkle zu bringen, da du offensichlich andere Begriffe verwendest als ich sie zumindest kenne. Dass Rolf da irgendwie geraten hat, dass du Konfigurationsvariabeln benötigst spricht für seine hellseherischen Fähigkeiten, ließ sich aber nie und nimmer aus deiner Fragestellung ableiten.

                  danke fuer deine zeit die du aufgewendet hast um das problem zu verstehen, nur eben die antworten waren nicht wirklich konstruktiv.

                  Naja, deine bisher auch nicht, bzw. hast du noch nochmal den Versuch gemacht die Fragen zu beantowrten.

                  Struppi.

                  --
                  Javascript ist toll (Perl auch!)
  2. Hallo,

    ich habs mit der Suche probiert, aber leider nix passendes gefunden...
    Mein Problem ist folgendes:
    Ich habe mehrere Skripte mit zum Beispiel Variable $X.
    Nun moechte ich mir ein Skript basteln das Variable $X aendert.

    Vorschlag: Halte die Variablen in einer ini-Datei

    [common]
    varX=1
    varY=2

    mit dem PERL-Modul Config::IniFiles kannst Du einmal aus der ini die Variablen lesen, die stünden z.B. in $cfg{common}{varX} ... in jedem Script zur Verfügung und Du kannst mit dem Modul auch Variablen in der ini-Datei ändern mit einem entsprechenden Script.

    In meiner Praxis hat sich das schon bestens bewährt, insbesondere dann, wenn mehrere Scripts zu einer Anwendung gehören. One ring to rule them all.

    roro

    1. Hallo,

      ich habs mit der Suche probiert, aber leider nix passendes gefunden...
      Mein Problem ist folgendes:
      Ich habe mehrere Skripte mit zum Beispiel Variable $X.
      Nun moechte ich mir ein Skript basteln das Variable $X aendert.

      Vorschlag: Halte die Variablen in einer ini-Datei

      [common]
      varX=1
      varY=2

      mit dem PERL-Modul Config::IniFiles kannst Du einmal aus der ini die Variablen lesen, die stünden z.B. in $cfg{common}{varX} ... in jedem Script zur Verfügung und Du kannst mit dem Modul auch Variablen in der ini-Datei ändern mit einem entsprechenden Script.

      In meiner Praxis hat sich das schon bestens bewährt, insbesondere dann, wenn mehrere Scripts zu einer Anwendung gehören. One ring to rule them all.

      roro

      hmm... ist ne ueberlegung wert. das ist natuerlich sehr sauber...

      danke.

      1. hi,

        hmm... ist ne ueberlegung wert. das ist natuerlich sehr sauber...

        Ab in ein Modul damit:

        package Forum;

        my $inifile = 'forum.ini';

        use strict;
        require Exporter;
        use Config::IniFiles;

        use vars qw(
         @ISA
         @EXPORT
         @EXPORT_OK

        $cfg
        );

        $cfg = getvars($inifile);

        @EXPORT = qw(
         $cfg
        );

        die vars.ini einlesen

        sub getvars{
         my $inifile = shift;
         # hash mit Variablen binden
         my %vars;
         tie %vars, 'Config::IniFiles', ( -file => $inifile );
         return %vars;
        }

        nur mal als Beispiel...

        roro