Этот секретный синтаксис известен как декоративный двуручный меч и обычно обозначается как:
<<m=~m>>
Comments here
m
;
Это хитрость для многострочных комментариев, использующая синтаксис heredoc и оператор сопоставления ( =~) с >разделителем as.
Обратите внимание: косые черты,, /не используются в качестве разделителя для сопоставления, требуется оператор 'm'. Например $my_var =~ /test/, эквивалентно $my_var =~ m>test>, тогда как $my_var =~ >test>будет недопустимым.
Обратите внимание на то , что первый mсимвол в вашем фрагменте кода заключена в одинарные кавычки, то есть $aи $bпеременные не будут интерполированное. Если бы эти кавычки были опущены (в соответствии с моим примером кода), Perl автоматически добавлял бы двойные кавычки к конечному маркеру, и все последующие переменные были бы интерполированы. Это вызовет проблемы, если $aи $bбольше не определены, а вы используете use warnings;.
Чтобы упростить понимание вышеприведенного витиеватого примера с двумя лезвиями (но все же не рекомендуется), мы могли бы написать:
<<"END" =~ //
Comments here
END
;
Обратите внимание, что =~ //это избыточно, поэтому это эквивалентно:
<<"END";
Comments here
END
Это просто стандартный синтаксис heredoc в пустом контексте.
Я бы не рекомендовал использовать это в производственном коде, поскольку наличие строки в пустом контексте может вызвать проблемы. Кроме того, этот код является головной болью даже для самых опытных программистов на Perl, его бессмысленно трудно читать и поддерживать! Если вы хотите создать правильные многострочные комментарии, я бы посоветовал придерживаться модуля, как описано здесь. Как мне ввести многострочный комментарий в Perl?
Надеюсь, это проясняет ситуацию.