Diese geheime Syntax als ornate double-bladed sword bekannt und wird üblicherweise bezeichnet als:
<<m=~m>>
Comments here
m
;
Es ist ein Hack für mehrzeilige Kommentare, die Verwendung des heredoc Syntax und Match-Operator machen (=~
) mit >
als Trennzeichen.
Hinweis, da Schrägstriche /
nicht als Trennzeichen für die Anpassung verwendet werden, ist der Operator 'm' erforderlich. Zum Beispiel ist $my_var =~ /test/
äquivalent zu $my_var =~ m>test>
, wohingegen $my_var =~ >test>
ungültig wäre.
Achten Sie darauf, dass das erste m
Zeichen in Ihrem Snippet in einfache Anführungszeichen eingeschlossen ist, dh die Variablen $a
und $b
werden nicht interpoliert. Wären diese Anführungszeichen weggelassen worden (gemäß meinem mitgelieferten Codebeispiel), würde perl der Endmarke automatisch doppelte Anführungszeichen hinzufügen und alle nachfolgenden Variablen würden interpoliert werden. Dies würde Probleme verursachen, wenn $a
und $b
nicht länger definiert sind und Sie use warnings;
verwenden.
<<"END" =~ //
Comments here
END
;
Beachten Sie, dass die =~ //
redundant ist, so ist dies gleichbedeutend mit:
Um das verzierte Doppelblatt obige Beispiel leichter verständlich zu machen (aber immer noch empfohlen, nicht), könnten wir schreiben
<<"END";
Comments here
END
Das ist nur Standard-Heredoc-Syntax im void Kontext.
Ich würde nicht empfehlen, dies im Produktionscode zu verwenden, da eine Zeichenfolge im ungültigen Kontext Probleme verursachen kann. Außerdem ist dieser Code ein Kopfzerbrechen für selbst die erfahrensten Perl-Programmierer und ist sinnlos schwer zu lesen und zu pflegen! Wenn Sie richtige mehrzeilige Kommentare erstellen möchten, würde ich vorschlagen, an Pod wie hier erläutert haften How do I enter a multi-line comment in Perl?
Hoffe das klärt es auf.
mögliche Duplikate von [Verständnis seltsamer Perl mehrzeiliger Kommentarmechanismus] (http: // stackoverflow com/questions/5443121/verstanding-strange-perl-multiline-comment-mechanism) – Gilles
Sie können auf eine Liste der geheimen Perl Operatoren und Konstanten [hier] zugreifen (http: // search.cpan.org/dist/perlsecret/lib/perlsecret.pod). – aloisdg