Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Syntax $plugin_info

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] - √ - Syntax $plugin_info

    Hallo,

    ich brauche für eine Plugin-Logik permanente Werte (Tag/Nacht). Wenn ich eingebe

    95 $plugin_info{$plugname.'_Tag'} = $Tag; #speichern lok. auf glob. Var.
    96 $Tag = $plugin_info{$plugname.'_Tag'}; #übergeben global auf lokal

    dann erhalte ich nur für die Zeile 95 folgende Fehlermeldung:

    Bad name after _Tag' at (eval 2283) line 95, line 67085.

    $Tag ist eine binäre Variable.
    Wo ist der Syntax- bzw. Denkfehler? Die Hilfe im Wiregate ist hier nur sehr rudimentär. Wo finde ich denn eine ausführliche Dokumentation, in der z. B. auch $plugin_info dargestellt ist?

    Danke für die Hilfe!

    Harald

    #2
    Hmm, Doku ist knapp perldoc noch das beste..
    $plugin_info ist ein simpler zweidimensionaler Hash, also dem wäre es erstmal egal ob da $plugin_info{$plugname.'_meins'} oder $plugin_info{'Hurz'} steht, der speichert das..

    Mit dem ganzen Plugin liesse sich die Frage leichter beantworten; solange $Tag vorher (my $Tag) definiert wurde sieht das eigentlich gut aus..

    Edit: die Zeilennummern sind nicht Teil des Plugin-code(?!)

    Makki
    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
    -> Bitte KEINE PNs!

    Kommentar


      #3
      Hallo Makki,

      die Zeilennummern sind nicht Teil des Codes, $Tag war vorher definiert.

      Problem gelöst:
      Die verwendete Syntax für $plugin_info war tatsächlich in Ordnung. Der Fehler lag einige (!) Zeilen weiter oben und wurde durch den Debugger erst weiter unten erkannt und mit einer irrelevanten, irreführenden Fehlermeldung versehen. Es fehlte an einer Stelle schlicht ein Apostroph (')! Mann, das Perl macht mich noch fertig!

      Wie in anderen Threads schon erwähnt, habe ich nun mit Erfolg ausprobiert, globale Variablen pluginübergreifend zu verwenden. Einfach $plugname ersetzen durch 'soheisstdasPlugin', dann .'Name der globalen Variable', fertig. Naja, noch die geschweiften Klammern und der übliche Kleinkram.

      Globale Variablen setze ich in den Plugins z.B. ein für bestimmte Zustände, z.B. Feiertag (0/1).

      Auf den Apostroph-Fehler bin ich erst gestoßen, als du mir die Sicherheit gegeben hast, dass meine $plugin_info-Syntax richtig war. In der Doku Perldoc hätte ich diesbezüglich nichts gefunden. Also doch: Mensch schlägt Maschine! Herzlichen Dank! War vermutlich nicht meine letzte Anfrage in diesem tollen Forum.

      Gruß

      Harald

      Kommentar


        #4
        Schön das es gelöst ist..

        Das lässt sich sogar erklären: Der Perl-parser funktioniert in diesem Fall so, alles ab ' ist eben nicht interpretierter Text bis zum nächsten '
        Der nächste unkomplette ' wirft dann den Fehler an evtl. unerwarteter Stelle: der Interpreter sieht hier nur ein undefiniertes Tag mit viel Text danach.
        Hätte ich im Nachhinein auch aus der Compilermeldung gesehen, aber mitm kompletten Plugin ists halt einfacher für den In-Kopf-Parser

        Makki
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar

        Lädt...
        X