Этот секретный синтаксис известен как декоративный двуручный меч и обычно обозначается как:
<<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?
Надеюсь, это проясняет ситуацию.