Hauptmenü

(gelöst) checkDEF

Begonnen von igami, 03 Dezember 2015, 07:45:21

Vorheriges Thema - Nächstes Thema

igami

Hallo zusammen,

ich bin momentan dabei mein FHEM so zu verbiegen, dass ich Automationen über Attribute generiere, sollte sich hier mal etwas ändern möchte ich nur die betreffenden Code Zeilen ändern.

Nun habe ich das Problem, dass  ein vergleich mittels eq nicht zutrifft, obwohl die Ausgaben über return identisch sind.

sub checkDEF{
  my $DEF = InternalVal("define_default_notify", "DEF", undef);
  my @def = (
                     q[global.DEFINED.default.*],
                     q[  attr $EVTPART1 room default;],
                     q[  attr $EVTPART1 subType default;],
                     q[  attr $EVTPART1 userattr attributes regexp]
                    );

  my $desired = join("\n", @def);

  return "$DEF \n\n $desired";
}


global.DEFINED.default.*
  attr $EVTPART1 room default;
  attr $EVTPART1 subType default;
  attr $EVTPART1 userattr attributes regexp

global.DEFINED.default.*
  attr $EVTPART1 room default;
  attr $EVTPART1 subType default;
  attr $EVTPART1 userattr attributes regexp


Wie müsste ich die beiden Variablen vergleichen um ein true zu erhalten?

Danke und Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

fiedel

FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

igami

Habe es nun umgestellt zu

sub checkDEF{
  chomp(my $DEF = InternalVal("define_default_notify", "DEF", undef));
  my @def = (
             q[global.DEFINED.default_.*],
             q[  attr $EVTPART1 disable 1;],
             q[  attr $EVTPART1 room default;],
             q[  attr $EVTPART1 subType default;],
             q[  attr $EVTPART1 userattr attributes regexp]
            );
  chomp(my $expected = join("\n", @def));

  #return "$DEF\n\n$expected";
  return 1 if($DEF eq $expected);
}

Die Ausgaben sind identlisch laut http://text-compare.com/, leider immer noch keine 1 bei

$DEF eq $expected

In der Ausgabe sehe ich jedoch auch immer noch Zeilenumbrüche.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

igami

Habe es nun so gelöst

sub checkDEF{
  my $DEF = join("", split("\n", InternalVal("define_default_notify", "DEF", undef)));
  my @expected = (
             q[global.DEFINED.default_.*],
             q[  attr $EVTPART1 disable 1;],
             q[  attr $EVTPART1 room default;],
             q[  attr $EVTPART1 subType default;],
             q[  attr $EVTPART1 userattr attributes regexp]
            );
  my $expected = join("", @expected);

  return 1 if($DEF eq $expected);
}

Ich vermute, dass das chomp nicht funktioniert hat, da der Zeilenumbruch nicht am Ende, sondern mittem im Text ist.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED