FHEM Forum

FHEM => Sonstiges => Thema gestartet von: housekeeper am 21 März 2013, 09:16:09

Titel: ^* matches null string many times in regex;
Beitrag von: housekeeper am 21 März 2013, 09:16:09
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at /var/InternerSpeicher/fhem/usr/bin/fhem.pl line 777.

Muß ich mir da was draus machen, oder kann ich das ignorieren ?

   eval {                              # a bad regexp may shut down fhem.pl
      if($l =~ m/[*\[\]^\$]/) {         # Regexp
777        push @ret, grep($_ =~ m/^$l$/, sort keys %defs);
        $regok = 1;
      }
    };

Titel: Aw: ^* matches null string many times in regex;
Beitrag von: rudolfkoenig am 21 März 2013, 12:18:53
Sagt auf komplizierte weise, dass die Argumente fuer devspec nicht shell-globs sondern regexps sind.
Fuer nicht eingeweihte: das was im Shell * ist, ist im regexp .*, und das ? sollte man in FHEM als . (Punkt) eingeben.

Also statt "set * off" lieber "set .* off" verwenden.
Titel: Aw: ^* matches null string many times in regex;
Beitrag von: fiedel am 03 Oktober 2013, 09:28:57
Mal eine Frage an die Perl- Hasen:

Wie finde ich zielgerichtet heraus, wo genau ich meine(n) Syntaxfehler gemacht habe?

Meldung im Log:

^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at ./FHEM/01_FHEMWEB.pm line 2179.

Betroffene Codezeile:

    my @list = split(" ", $devStateIcon);
    foreach my $l (@list) {
      my ($re, $iconName, $link) = split(":", $l, 3);
2179      if(defined($re) && $state =~ m/^$re$/) {
        if($iconName eq "") {
          $rlink = $link;
          last;
        }
        return ($iconName, $link, (defined(FW_iconName($iconName)) ? 0 : 1));
      }
    }
  }


Vielen Dank... ;o)

Frank
Titel: Aw: ^* matches null string many times in regex;
Beitrag von: rudolfkoenig am 03 Oktober 2013, 11:23:30
^ ist Anfang der Zeile
* das vorherige Zeichen beliebig oft
In Kombination ist das fuer perl sinnfrei.
Titel: Aw: ^* matches null string many times in regex;
Beitrag von: fiedel am 05 Oktober 2013, 09:05:57
Hi Rudi,

vielen Dank für die schnelle Antwort!
Jetzt habe ich also mal die Suchfunktion auf das Zeichen Stern (*) in der CFG gehetzt und kontrolliert, ob irgendwo ein Punkt davor fehlt. Gefunden habe ich z.B. das:


attr Dum_fp_Name_D devStateIcon *:Transparent


Dann geändert in:


attr Dum_fp_Name_D devStateIcon .*:Transparent


Und schon ist Ruhe im Karton. ;o)

Viele Grüße

Frank