Perlwarnung in myUtils

Begonnen von Invers, 01 März 2019, 10:54:01

Vorheriges Thema - Nächstes Thema

Invers

Seit lange Zeit steht die folgende Anweisung in myUtils und wurde klaglos ausgeführt:
my $datum_2 = sprintf("Heute ist %s der " . $Monatstag1 . " " . $Monatsnamen[$Monat-1] . " " . $Jahr,
   $Wochentage[$Wochentag],
   $Monatstag,
   $Monatsnamen[$Monat-1],
   $Jahr,
);


Jetzt kommt seit einiger Zeit (weiss nicht genau, seit wann) die Warnung:
PERL WARNING: Redundant argument in sprintf at ./FHEM/99_myUtils.pm line 728. eval: {date_time()}


Wer sagt mir bitte, was da falsch ist? Ich bin da nicht der grosse Checker, hatte die ganze Geschichte vor Jahren mal irgendwo übernommen und an meine Bedürfnisse angepasst.

Danke im Voraus..
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

rudolfkoenig

Das erste Argument fuer sprintf ein ein Formatstring, %s und Konsorten benoetigen zusaetzliche Parameter.

Etwa in der Art (ungetestet):sprintf("Heute ist %s der %s %s %s",
   $Wochentage[$Wochentag],
   $Monatstag,
   $Monatsnamen[$Monat-1],
   $Jahr,
);


Alternativ baut man den String ohne sprintf:"Heute ist $Wochentage[$Wochentag] der $Monatstag1 $Monatsnamen[$Monat-1] $Jahr"
Man kann beide Verfahren mischen, fuehrt aber zu Problemen, wenn die Variablen %s oder Konsorten enthalten, deswegen sollte man das Mischen vermeiden.

Invers

Ahhh, ich habe Dank der ausführlichen Erklärung verstanden.
Eine eigene Suche hatte das leider nicht zutage gefördert.
Ich danke für die ausführliche Antwort und entscheide mich mal vorerst für Variante 2.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2