FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Loki am 07 Februar 2018, 21:27:25

Titel: geschachtelte " und ' und escapen
Beitrag von: Loki am 07 Februar 2018, 21:27:25
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?
Titel: Antw:geschachtelte " und ' und escapen
Beitrag von: Otto123 am 07 Februar 2018, 21:39:57
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
Titel: Antw:geschachtelte " und ' und escapen
Beitrag von: Phill am 07 Februar 2018, 23:07:24
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.
Titel: Antw:geschachtelte " und ' und escapen
Beitrag 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
Titel: Antw:geschachtelte " und ' und escapen
Beitrag von: Phill am 08 Februar 2018, 09:19:17
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ß

Titel: Antw:geschachtelte " und ' und escapen
Beitrag von: Loki am 08 Februar 2018, 21:13:37
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.
Titel: Antw:geschachtelte " und ' und escapen
Beitrag von: Otto123 am 08 Februar 2018, 21:31:11
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