Sonderzeichen und Steuerzeichen in Variablen
Thorsten Steffen
- perl
Hi,
kann mir jemand sagen, welche Sonder- und Steuerzeichen in perl-Variablen mit vorangestelltem \ angegeben werden müssen (wie z.B. @), damit sie korrekt ausgegeben werden.
Außerdem möchte ich in einer mail mit
print MAIL ".CF 10\n";
einen Punkt am Anfang einer Zeile schreiben. Leider kommt die Mail immer ohne Punkt an.
Was habe ich falsch gemacht ?
Gruß
Thorsten
Hi,
kann mir jemand sagen, welche Sonder- und Steuerzeichen in perl-Variablen mit vorangestelltem \ angegeben werden müssen (wie z.B. @), damit sie korrekt ausgegeben werden.
Außerdem möchte ich in einer mail mit
print MAIL ".CF 10\n";
einen Punkt am Anfang einer Zeile schreiben. Leider kommt die Mail immer ohne Punkt an.
Was habe ich falsch gemacht ?Gruß
Thorsten
Hi Thorsten,
sogesehen mußt du alle Sonderzeichen die mit der Struktur von Perl zutun haben maskieren. Also "@!$&()=+- u.s.w.
Im Zweifelsfall immer in einem mini-script einfach probieren....
Dein "print Mail" Beispiel habe ich getestet und bei mir funktioniert es. Ich weiß auch nicht, siehe dein Script besser nochmal durch.
gruß Daniel
Hi Thorsten,
sogesehen mußt du alle Sonderzeichen die mit der Struktur von Perl zutun haben maskieren. Also "@!$&()=+- u.s.w.
Im Zweifelsfall immer in einem mini-script einfach probieren....Dein "print Mail" Beispiel habe ich getestet und bei mir funktioniert es. Ich weiß auch nicht, siehe dein Script besser nochmal durch.
gruß Daniel
Muß ein Punkt auch maskiert werden ?
Mein
open(MAIL,"$Mailprogramm -t") die "Can't send mail, error opening sendmail";
print MAIL "To: $Empfaenger\n";
print MAIL "From: $SenderMail $SenderName\n";
print MAIL "Subject: $MailSubject\n\n";
print MAIL "$ANFANGSPARAMETER";
print MAIL ".CF 10\n";
...
funktioniert nicht, keine Ahnung woran es liegt.
Folgendes funktioniert aber, es wird jeweils ein (!) Punkt ausgegeben.:
print MAIL "..CF 10\n";
print MAIL "..CF 10\n";
Gruß
Thorsten
hallo Thorsten,
grunsätzlich nein. print ".CF" gibt auch wirklich ".CF" aus.
Am besten Du liest Dir 'perlop.html#Quote_and_Quote_like_Operators' der Core-Doku durch. Dort steht alles wissenswerte. eine genaue Erklärung wie das genau funktioniert, würde den Rahmen hier sprengen.
Ich denke, da ist Perl gar nicht der Schuldige. Gib doch das ganze einfach einmal in eine Datei aus und sieh Dir den Output an.
Dann siehst Du schon was passiert.
Schönen Abend noch
Klaus
Hallo!
Folgendes funktioniert aber, es wird jeweils ein (!) Punkt ausgegeben.:
print MAIL "..CF 10\n";
print MAIL "..CF 10\n";
Beim Versenden von Mails ueber SMTP wird das Ende der Mail mit einer Zeile gekennzeichnet, die lediglich aus einem Punkt besteht. Da eine solche Zeile auch ganz normal im Text der Mail vorkommen kann, wird vor der Uebertragung jeder Punkt am Zeilenanfang im normalen Text verdoppelt, und dann auf der anderen Seite wieder zwei Punkte am Zeilenanfang zu einem gemacht. (Siehe RFC 821 section 4.5.2) Offenbar wird von sendmail (?) dasselbe Protokoll verwendet, wenn der Mailtext eingegeben wird. Du wirst also diese Prozedur auf Deine zu versendenden Daten anwenden muessen.
Was die Maskierung angeht, so kannst Du generell jedes nicht-alphanumerische Zeichen (also alles ausser [a-zA-Z0-9]) durch \ maskieren. Die Zeichen, die ohne \ eine Sonderbedeutung haetten, werden dadurch neutralisiert, bei den anderen stoert es nicht. Aber ein \ vor einem alphanumerischen Zeichen wird dessen Sonderbedeutung erst *einschalten*, z.B. steht \t fuer Tabulator (ASCII 9) und \n fuer Linefeed (systemabhaengig; meist ASCII 10).
So long
Hallo Thorsten,
Hi,
kann mir jemand sagen, welche Sonder- und Steuerzeichen in perl-Variablen mit vorangestelltem \ angegeben werden müssen (wie z.B. @), damit sie korrekt ausgegeben werden.
[...]
Schau Dir mal 'perldoc -f quotemeta' an, das wird dir helfen.
Gruß
Thorsten
Gruss
Kai