Warum ist das @ -Symbol in diesem regulären Perl-Ausdruck ausgeblendet?

8

Ich beziehe gerade Perls RegExps und verstehe es im Großen und Ganzen. Escape-Zeichen habe ich auch begriffen, denke ich, dh auf einen Backslash zu testen, der mit m / \ / bezeichnet werden kann, indem der Backslash weiterverarbeitet werden muss, kaufe zuerst das \ Zeichen, um Perl in diesem Fall zu sagen, um es entsprechend seiner üblichen Bedeutung zu suchen .

Was ich mit dem unten stehenden Code nicht verstehe, ist, dass dieses Muster übereinstimmt und warum (\) beim Testen der E-Mail-Adresse mit @ symbold (im if-Anweisungsausdruck) verwendet wird. Ich bin mir nicht bewusst, @ ist ein besonderer Charakter zu entkommen oder habe ich etwas verpasst?.

%Vor%     
Mike Thornley 08.02.2011, 19:23
quelle

4 Antworten

11

Es ist wahrscheinlich entkommen, um nicht als Array-Siegel interpretiert zu werden. Es ist nicht unbedingt notwendig, aber es ist eine harte Gewohnheit zu brechen.

Beispiele:

%Vor%

ergibt:

%Vor%

Gleiches gilt für:

%Vor%     
mkb 08.02.2011 19:28
quelle
8

@ ist kein reserviertes Zeichen in Bezug auf Regexes, aber es ist für Perl (es ist das Array-Symbol)

    
Matt King 08.02.2011 19:26
quelle
5

In Perl können Sie jedem potenziellen Regex-Metazeichen entkommen und sicherstellen, dass es sich um ein Literal handelt.

Auch für @ ist dies das Array-Sigil. Wenn es also eine Chance gibt, dass es mit einer @/ -Variable verwechselt wird, ist es sinnvoll zu entkommen.

    
Platinum Azure 08.02.2011 19:34
quelle
5

Arrays werden sowohl in Strings in doppelten Anführungszeichen als auch in Rexes in Perl interpoliert, wobei die spezielle Variable $" (standardmäßig ein Leerzeichen) zwischen jedem Element liegt:

%Vor%

Ich verwende diese Funktion nur selten, aber gelegentlich ist sie nützlich, zum Beispiel:

%Vor%     
Sean 08.02.2011 19:43
quelle

Tags und Links