Ta sekretna składnia jest znana jako ozdobny miecz o podwójnym ostrzu i jest zwykle oznaczana jako:
<<m=~m>>
Comments here
m
;
Jest to trik dla komentarzy wielowierszowych, wykorzystujący składnię heredoc i operator dopasowania ( =~
) z >
ogranicznikiem.
Pamiętaj, że ukośniki /
nie są używane jako separator przy dopasowywaniu, wymagany jest operator „m”. Na przykład $my_var =~ /test/
jest równoważne $my_var =~ m>test>
, podczas gdy $my_var =~ >test>
byłoby nieprawidłowe.
Należy zwrócić uwagę na fakt, że pierwszy m
znak w swoim fragmencie jest otoczony apostrofami, co oznacza, że $a
i $b
zmienne nie będzie interpolowana. Gdyby te cudzysłowy zostały pominięte (zgodnie z podanym przeze mnie przykładem kodu), perl automatycznie dodawałby podwójne cudzysłowy do znacznika końcowego, a wszelkie kolejne zmienne byłyby interpolowane. Spowodowałoby to problemy, jeśli $a
i $b
nie są już zdefiniowane i używasz use warnings;
.
Aby powyższy przykład ozdobnego podwójnego ostrza był łatwiejszy do zrozumienia (ale nadal nie jest to zalecane), możemy napisać:
<<"END" =~ //
Comments here
END
;
Zauważ, że =~ //
jest nadmiarowy, więc jest to równoważne z:
<<"END";
Comments here
END
Co jest po prostu standardową składnią heredoc w kontekście pustki.
Nie polecałbym używania tego w kodzie produkcyjnym, ponieważ posiadanie łańcucha w kontekście pustym może powodować problemy. Poza tym ten kod jest drapieżnikiem nawet dla najbardziej doświadczonych programistów Perla i jest bezcelowo trudny do odczytania i utrzymania! Jeśli chcesz tworzyć poprawne komentarze wieloliniowe, sugerowałbym trzymanie się pod, jak wyjaśniono tutaj. Jak wprowadzić komentarz wieloliniowy w Perlu?
Mam nadzieję, że to wyjaśnia sprawę.