geschachtelte " und ' und escapen

Begonnen von Loki, 07 Februar 2018, 21:27:25

Vorheriges Thema - Nächstes Thema

Loki

Hallo,

ich habe ein Problem mit geschachtelten Anführungsstrichen.
Mein Code in einem Notify sieht so aus:

fhem ("DebianMail('xxxx\@pomail.net','CamGarten Bewegung aufgezeichnet',' ','/opt/fhem/www/snapshots/last_thumb.jpg')");

Leider wird die Mail nicht versendet. Ich denke es liegt am @ Zeichen, bzw. dem escape davor.
Ohne zu escapen meckert die DEF
Global symbol "@pomail" requires explicit package name (did you forget to declare "my @pomail"?)

führe ich das Ganze über die Eingabe aus, geht es problemlos:
{ DebianMail('xxxx@pomail.net','CamGarten Bewegung aufgezeichnet',' ','/opt/fhem/www/snapshots/last_thumb.jpg') }

Ich dachte eigentlich innerhalb von ' brauche ich nicht zu escapen, aber die " von der fhem() Klammer scheinen es zu erzwingen.
Wie ist es denn nu korrekt?

Otto123

#1
Weiß nicht ob das hier hilft -> https://wiki.fhem.de/wiki/E-Mail_senden#Raspberry_Pi

Wozu das fhem("") ??? das ist doch eh keine FHEM sondern eine 99_myUtils Funktion? Einfach im notify so verwenden wir Deine zweite Variante {}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Phill

Zitat von: Loki am 07 Februar 2018, 21:27:25
Ich dachte eigentlich innerhalb von ' brauche ich nicht zu escapen, aber die " von der fhem() Klammer scheinen es zu erzwingen.
Wie ist es denn nu korrekt?
Der String befindest sich nicht innerhalbt von ' sondern innerhalb von ". Deswegen wird auch das @ interpretiert.
So herum würde es nicht interpretiert werden.
fhem ('DebianMail("xxxx@pomail.net","CamGarten Bewegung aufgezeichnet"," ","/opt/fhem/www/snapshots/last_thumb.jpg")');
Wobei ich eigentlich sagen würde, das escapen sollte funktionieren.
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

Otto123

@Phill Dein umgedrehtes Beispiel ist bezüglich der " und ' sicher richtig. Aber ich sags nochmal: das fhem ist Unsinn. Das ist eine sub in 99_myUtils und das ist Perl! Die sub wird mit {DebianMail()} aufgerufen. Die äußere Klammer fhem('') ist auch bei Dir quatsch!

Oder liege ich da falsch?

Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Phill

Zitat von: Otto123 am 08 Februar 2018, 09:16:41
@Phill Dein umgedrehtes Beispiel ist bezüglich der " und ' sicher richtig. Aber ich sags nochmal: das fhem ist Unsinn. Das ist eine sub in 99_myUtils und das ist Perl! Die sub wird mit {DebianMail()} aufgerufen. Die äußere Klammer fhem('') ist auch bei Dir quatsch!

Oder liege ich da falsch?

Otto
Jetzt sehe ich es auch. [emoji3] Du hast Recht.

Gruß

Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

Loki

Vielen Dank für Eure Hinweise.

Ich habe irgendwie noch nicht ganz kapiert, wann ich in fhem() Klammern muss und wann nicht..

Jetzt funktioniert es auf jeden Fall.

Otto123

relativ einfach: nur wenn Du FHEM Befehle innerhalb einer Perl Ebene -> {} aufrufen willst.
Wenn Du Perl Funktionen (und DebianMail ist eine Perl Funktion sie steht in der 99_myUtils) aufrufen willst kannst Du das bloß auf Perl Ebene -> {} und da bist Du quasi schon drin.
Mit dieser Konstruktion -> {fhem("")} gehts Du aus FHEM in die Perl Ebene wieder zurück in den FHEM Ebene und dort führst Du FHEM Befehle aus.
fhem("") ist eine Perl Funktion um FHEM Befehle aufzurufen.

Alles klar?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz