Цей таємний синтаксис відомий як багато прикрашений двоострий меч і зазвичай позначається як:
<<m=~m>>
Comments here
m
;
Це хак для багаторядкових коментарів, використовуючи синтаксис heredoc та оператор match ( =~) з >як роздільник.
Зверніть увагу, що скісні риски, /не використовуються як роздільник для узгодження, потрібен оператор 'm'. Наприклад $my_var =~ /test/, еквівалентно $my_var =~ m>test>, тоді як $my_var =~ >test>буде недійсним.
Зверніть увагу на те, що перший mсимвол у вашому фрагменті укладений одинарними лапками, тобто змінні $aand $bі не будуть інтерпольовані. Якби ці лапки були опущені (згідно з наведеним моїм прикладом коду), perl автоматично додав би подвійні лапки до кінцевого маркера, а всі наступні змінні були б інтерпольовані. Це може привести до проблем , якщо $aі $bне більше і не визначена , і ви використовуєте use warnings;.
Щоб полегшити розуміння багато прикрашеного прикладу з двома лезами (але все ж не рекомендується), ми могли б написати:
<<"END" =~ //
Comments here
END
;
Зверніть увагу, що =~ //є зайвим, тому це еквівалентно:
<<"END";
Comments here
END
Що є лише стандартним гередоковим синтаксисом у порожньому контексті.
Я б не рекомендував використовувати це у виробничому коді, оскільки наявність рядка у контексті void може спричинити проблеми. Крім того, цей код є головним скриптом навіть для найдосвідченіших програмістів perl, і його безглуздо важко читати та обслуговувати! Якщо ви хочете створити належні багаторядкові коментарі, тоді я б запропонував дотримуватися pod, як пояснено тут. Як мені ввести багаторядковий коментар у Perl?
Сподіваюся, це прояснить.