^* 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;
}
};
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.
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
^ ist Anfang der Zeile
* das vorherige Zeichen beliebig oft
In Kombination ist das fuer perl sinnfrei.
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