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