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 mznak w swoim fragmencie jest otoczony apostrofami, co oznacza, że $ai $bzmienne 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 $ai $bnie 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ę.