Fehler bei ;;\+Tabulator vor Zeilenumbruch bei Perl in cfg

Begonnen von tupol, 25 Januar 2014, 21:02:20

Vorheriges Thema - Nächstes Thema

tupol

Hallo Rudi,

es hatte mich schon mehrfach fast zum Jammern getrieben, weil meine cfg-Scripte ohne ersichtlichen Grund nicht funktioniert haben. Aber jetzt habe ich endlich den Grund gefunden.

Wenn man in eine cfg-Datei mehrere Perl Befehle schreibt, können diese mit ;;\<LineFeed> getrennt werden. Schreibt man aber ;;\<TAB><LF> wird dies anscheint nicht korrekt an Perl weitergegeben.

Erst wenn der <TAB> entfernt wurde, funktioniert es. Dummerweise sieht man den TAB aber nur, wenn man Steuerzeichen anzeigen kann.

PS: Ich schreibe meine Scripte in Notepad++ und kopiert dann den Inhalt über die WebGUI.

Gruß

Tupol

rudolfkoenig

Bin (z.Zt.) dagegen, aus folgenden Gruenden:
- alle anderen Programme die ich kenne machen auch nicht solche Ausnahmen
- wenn man einen Editor nicht beherrscht, dann sollte man es nicht verwenden
- wenn man Definitionen in der FHEMWEB Detailansicht aendert, dann braucht man kein \, bei 99_myUtils.pm auch nicht. Ergo ersetzt du fhem.cfg, und das will ich nicht weiter optimieren, da es auch andere Probleme hat.

tupol

#2
Hallo Rudi,

fällt mir etwas schwer das nachzuvollziehen. Letztendlich gestatten alle Editor das Einfügen von Tabulatoren und dieser Fehler sollte immer dann auftreten, wenn cfg-Datei(en) extern erzeugt werden.

Aber OK.  :( Dann halten wir hier für andere Verzweifelt-nach-dem-Fehler-Suchende fest, dass für mehrzeilige PERL-Scripte in CFG-Dateien (z.B. hinter notify) folgendes gilt:
1. FHEM kommt mit Tabulatoren am Zeilenanfang von mehrzeiligen PERL-Scripten in CFG-Dateien zurecht.
2. FHEM akzeptiert Leerzeichen am Zeilenende in der Form: ;;\{SPACE}{LineFeed}
3. FHEM akzeptiert keine Tabulatoren am Zeilenende in der Form: ;;\{TAB}{LineFeed}
4. Es gibt keine Debug-Info, die diesen Fehler (3) aufzeigt. Also besser beim Erzeugen der cfg-Datei(en) in externen Editoren die Steuerzeichen einblenden und auf Tabulatoren am Zeilenende achten.

Gruß

Tupol