PERL WARNING: Invalid conversion in sprintf

Begonnen von Jewe, 18 Januar 2023, 22:18:17

Vorheriges Thema - Nächstes Thema

Jewe

Hallo,

leider bekomme ich nicht darauf, warum ich diese Fehlermeldung bekomme:

2023.01.18 22:04:10 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 6928) line 1.
2023.01.18 22:04:10 3: eval: { sprintf("Dach min.: %.1f °C, %.1f %, max %.1f °C, %.1f %, Letzte: %.1f °C, %.1f %", $data{min1},$data{min2},$data{max1},$data{max2},$data{currval1},$data{currval2}) }


Falscher Code gelöscht...

Richtig ist:
define SVG_Temp_DG SVG myDbLog:SVG_Temp_DG:HISTORY
attr SVG_Temp_DG DbLogExclude .*
attr SVG_Temp_DG label sprintf("Dach min.: %.1f °C, %.1f %, max %.1f °C, %.1f %, Letzte: %.1f °C, %.1f %", $data{min1},$data{min2},$data{max1},$data{max2},$data{currval1},$data{currval2})
attr SVG_Temp_DG room Temperaturen
#   DEF        myDbLog:SVG_Temp_DG:HISTORY
#   FUUID      5c4cce1c-f33f-9f49-0ad0-90db41b88ad4068f
#   FVERSION   98_SVG.pm:0.265390/2022-10-15
#   GPLOTFILE  SVG_Temp_DG
#   LOGDEVICE  myDbLog
#   LOGFILE    HISTORY
#   NAME       SVG_Temp_DG
#   NR         329
#   STATE      initialized
#   TYPE       SVG
#
setstate SVG_Temp_DG initialized


OdfFhem

Evtl. sind die nicht maskierten, einzelnen %-Zeichen schuld, da das %-Zeichen eine besondere Bedeutung hat ...

Jewe

Habe die einzelnen % nun durch doppelte ersetzt und bisher sieht es ganz gut aus.
Danke schon mal,

Jens

betateilchen

Das Attribut label ist deprecated, stattdessen sollte man plotReplace verwenden.

Und wenn man an der Stelle mit perl code arbeitet, sollte man den auch korrekt angeben. Allerdings habe ich label schon ewig nicht mehr benutzt (wegen plotreplace) dass ich schon gar nicht mehr weiss, wie man das früher machen musste.

plotreplace ist halt da logischer und übersichtlicher.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jewe

Danke für die Info, werde mir plotReplace anschauen.