Thread Anfängerfrage Unterstrich (18 answers)
Opened by lern_noch at 2023-01-31 11:42

haj
 2023-02-01 20:40
#194630 #194630
User since
2015-01-07
561 Artikel
BenutzerIn

user image
2023-02-01T12:43:56 lern_noch
Das Ausblenden des Unterstrichs geschieht bereits in der Zeile

my $soll = $_;

Aus v_21 wird dann v <neue Zeile> 21.

Das wirst Du nochmal genauer untersuchen müssen. Das passiert irgendwo anders, denn diese Zeile blendet definitiv keinen Unterstrich aus! Hast Du eine Möglichkeit, den Inhalt der Variablen zu protokollieren? Oder das ganze im Debugger laufen zu lassen?

Ich möchte noch auf ein paar stilistische Auffälligkeiten hinweisen, die nicht unbedingt falsch sind, aber manchmal schwer zu lokalisierende Fehler auslösen:

  • Anstelle von open(DATEI,"kontrolle.lh"); solltest Du die open-Variante mit drei Argumenten verwenden:
    Code (perl): (dl )
    open(my $datei, '<', 'kontrolle.lh');
    Warum ist das wichtig? DATEI ist eine "old-style" globale Variable und es besteht die (zugegebenermaßen unwahrscheinliche) Chance, dass an anderer Stelle im Code das gleiche Handle verwendet wird.
  • Anstelle der impliziten Nutzung von $_ solltest Du Deine Zeilen gleich in eine "eigene" Variable schreiben:
    Code (perl): (dl )
    while (my $soll = <$datei>){
    Warum ist das wichtig? $_ ist ebenfalls eine globale Variable. Wenn der Teil von FHEM, der Deine Routine aufruft, auch $_ verwendet, dann überschreibst Du dessen Inhalt mit Deinen Zeilen.
  • Anstelle von chop($soll); schreibt man besser:
    Code (perl): (dl )
    chomp($soll);
    Warum ist das wichtig? chop frisst nicht gezielt den Zeilenumbruch, sondern das letzte Zeichen der Zeile. "Normalerweise" macht das keinen großen Unterschied, aber die letzte Zeile einer Datei muss nicht unbedingt mit einem Zeilenumbruch aufhören.
  • Das sieht wie ein Fehler mit Copypaste aus:
    2023-02-01T12:43:56 lern_noch
    Code (perl): (dl )
    if (ReadingsVal ($isoll,"state","") ne ReadingsVal ($isoll,"state","")) {
    Sollten da nicht einfach $isoll und $iist verglichen werden?

Last edited: 2023-02-01 22:48:35 +0100 (CET)

View full thread Anfängerfrage Unterstrich