В этом RFC упоминается
В отличие от многих языков программирования, Perl в настоящее время не поддерживает настоящие многострочные комментарии. Это и обходные пути, которые обычно используются , могут быть проблематичными. Эту проблему можно решить, добавив новый синтаксис, чтобы комментарии могли занимать более одной строки, как вариант приведенной ниже документации, приведенной ниже.
Каковы распространенные обходные пути?
Два метода, которые я нашел здесь :
if (0) {
}
и
=pod
=cut
Безопасны ли они? использовать? Есть ли другие, которые работают лучше?
Недостаток решения "if" заключается в том, что закомментированный код все еще должен быть скомпилирован (и, следовательно, должен быть проверен синтаксис).
Недостаток вашего модуля в том, что ваши комментарии будут отображаться в любой документации, созданной из модуля.
Я использую версию решения pod, в которой нет этой проблемы. Pod поддерживает абзацы =begin format ... =end format, которые обрабатываются определенными модулями форматирования. Я просто изобретаю формат «комментариев», который не обрабатывается ни одним из форматировщиков, которые я использую.
=begin comment
This is ignored by everything
=end comment
Обновление:
Я пропустил важную часть моего примера. Вам нужно закончить раздел pod с помощью =cut. Вот полный пример.
#!/usr/bin/perl
print "This line is executed\n";
=begin comment
print "This line isn't\n";
=end comment
=cut
print "This line is\n";
В документации Perl описано, как это сделать в perlfaq7. Это достаточно безопасно, и поскольку мы можем сделать это с помощью Pod, нам не нужен дополнительный синтаксис:
Как я могу закомментировать большой блок кода Perl?
Вы можете использовать встроенный POD, чтобы отказаться от него. Вложите блоки, которые вы хотите
закомментируйте в маркерах POD. Директива =begin
отмечает раздел для
конкретный форматировщик. Используйте формат «комментарий», который не форматирует
должен претендовать на понимание (согласно политике). Отметьте конец блока
=конец
.
# program is here
=begin comment
all of this stuff
here will be ignored
by everyone
=end comment
=cut
# program continues
Директивы пода не могут идти куда попало. Вы должны поставить стручок директива, где синтаксический анализатор ожидает новый оператор, а не только в середина выражения или какое-либо другое произвольное грамматическое произведение.
Подробнее см. perlpod.
Редактор с функцией "Область комментариев".
Например, Komodo Edit. Я почти уверен, что Eclipse и JEdit тоже это делают, но у меня нет их под рукой, чтобы проверить.
Эта функция обычно вставляет символ «Комментарий к этой строке» в начале каждой строки в выбранной области. Его преимущество заключается в том, что он не конфликтует с существующими комментариями (что представляет собой риск, если вы переносите область, содержащую многострочный комментарий, на большинстве языков)
Мой любимый способ многострочного комментирования — __END__
.
print "Hello world\n";
__END__
The script has ended. Perl does not treat this part of the file as code.
I can put whatever I want down here. Very handy.
Одним из особых вариантов использования является комментирование нескольких строк кода. Но если вы используете систему контроля версий, вы можете просто удалить ненужный код, а не комментировать его, и, если он вам когда-нибудь понадобится, просто получите старую версию.
В дополнение к форме
=begin comment
multi-paragraph comments here
=end comment
=cut
в других ответах вы также можете сделать это:
=for comment
this is a single pod paragraph comment do
not put extra blank lines after =for. the
comment ends after the first blank line and
regular pod continues until =cut
Hello! C<Yay!>
=cut
абзац комментариев не будет отображаться в выводе модуля, но сообщение Hello "Yay !" будет.