Hallo, ich möchte mit HTTPMOD eine Variable verwenden. Kann ich in dem Regex eine Variable einsetzen?
attr HTTPMODEssensvorschlag reading1Regex Gericht1<p>(.*)<p>
Gericht1 soll die Variable sein!!
Sowas kann man nicht.
Du kannst Gericht1 auch als Regex eingeben: Gericht[0-9]<p>
So wird er alle Gerichte holen
Es gibt vielleicht andere Möglichkeiten, aber es ist mit so wenig Information schwierig zu sagen.
Ich würde gerne auf eine Website verschiedene Gerichte hinterlegen. Wenn ich Alex z.B. "Essensvorschlag" sage, dann soll mir per Zufall eines dieser Gerichte vorgeschlagen werden. Vielleicht verfolge ich auch einen kompletten falschen Ansatz.
Ich würde alle Gerichte holen, und dann ein userReading mit Hilfe von rand() bauen, um ein dieses Readings als "Vorschlag" zu machen
Dein Vorschlag gefällt mir.
Wenn ich es wie folgt versuche, kommt leider nur die Anzahl der Readings und nicht der entsprechende Inhalt dazu. Kannst Du mir einen Tipp geben, wo der Fehler ist? Danke.
Vorschlag {round(rand( grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ))),0)}
Etwas wie
my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ));
$hash->{READINGS}{$gerichte[round(rand(@gerichte))]};
(nicht getestet)
Allerbesten Dank schon mal. Ich bekomme es leider nicht hin.
Wie bekomme ich das in ein UserReading? Habe es über den Editor wie folgt versucht:
Vorschlag {my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} )); $hash->{READINGS}{$gerichte[round(rand(@gerichte))]}}
Mit und Ohne geschweifte Klammer am Anfang und Ende funktioniert auch nicht. Vermutlich ist es total simpel. Aber ich stehe auf dem Schlauch...:-)
Semikolon verdoppeln?
Was ist die Fehlermeldung?
Mit folgendem Versuch:
Vorschlag {my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ));; $hash->{READINGS}{$gerichte[round(rand(@gerichte))]}}
kommt diese Fehlermeldung:
Error evaluating HTTPMODEssensvorschlag userReading Vorschlag: Not enough arguments for main::round at (eval 37370320) line 1, near "))"
Mit folgender Änderung [round(rand(@gerichte),0)], bekomme ich keine Fehlermeldung mehr, dafür enthält das Reading folgenden Wert:
Vorschlag {my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ));; $hash->{READINGS}{$gerichte[round(rand(@gerichte),0)]}}
Wert des Readings: HASH(0x6bc54a8)
Hier mal alle Readings:
Gericht-1 Spagetti 2020-10-11 09:38:52
Gericht-2 Salat 2020-10-11 09:38:52
Gericht-3 Gulasch 2020-10-11 09:38:52
Gericht-4 Eintopf 2020-10-11 09:38:52
Gericht-5 Pizza 2020-10-11 09:38:52
Gericht-6 Brotzeit 2020-10-11 09:38:52
Vorschlag HASH(0x6bc54a8) 2020-10-11 09:38:52
Bei Vorschlag sollte als Wert des Readings eines der sechs Gerichte stehen. z.B. Eintopf.
Ja, sorry, ein hash->READING ist noch selbst ein hash mit timestamp und Wert
Vorschlag {my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ));; $hash->{READINGS}{$gerichte[round(rand(@gerichte),0)]}{VAL}}
Top. Das ist die Lösung. Herzlichen Dank für Deine Bemühungen und Hilfe. Wünsche noch einen schönen Sonntag.