Calocybe: Kommentarzeichen mittels print ausgeben

Beitrag lesen

Hi again!

hmmmm, ich habe es tatsaechlich nicht ausprobiert, sondern geschlossen. Kann mir das folgende jemand erklaeren?

C:>perl -we "print qq[\g]"
Unrecognized escape \g passed through at -e line 1.
g
C:>perl -we "print qq[#]"

C:>

Nun, gewoehnlich wird durch den \ einem alphanumerischen Zeichen eine Sonderbedeutung gegeben, waehrend bei non-alphanumerics eine eventuelle Sonderbedeutung aufgehoben wird. Z.B.
 n: Buchstabe                      --> \n Zeilenumbruch
 *: Im RegExp: bel. viele Zeichen  --> \* das Zeichen *

Dabei macht es im zweiten Fall nichts, wenn Zeichen maskiert werden, die eh keine Sonderbedeutung haben (z.B. #). Deshalb setzt ja auch quotemeta() einfach vor jedes [^a-zA-Z0-9_] einfach ein , ohne da weiter zu unterscheiden. Das macht es einfach, fuer saemtliche Sonderzeichen die Bedeutung z.B. in RegExps auszuschalten. Bei Buchstaben sehe ich aber keinen Sinn, einfach global \ davorzusetzen, da man ja nur ganz bestimmte Sonderbedeutungen wuenscht und daher gezielt einschaltet. Deshalb geht Perl wahrscheinlich davon aus, dass man sich verschrieben hat - entweder mit dem \ oder beim Zeichen nach dem \ - und warnt davor. Ausserdem wuerde ich nicht ausschliessen, dass in Zukunft weitere \x-Sequenzen eine Sonderbedeutung erhalten. Das wuerde dann zu Problemen fuehren, waehrend es bei non-alphanumerics nur dann problematisch wird, wenn man *nicht* seit eh und je global escapt.

BTW, auf einer Unix-Shell muesste man zusaetzlich natuerlich noch auf die -Interpretation der Shell achten.

So long