Каковы общие обходные пути для многострочных комментариев в Perl?

В этом RFC упоминается

В отличие от многих языков программирования, Perl в настоящее время не поддерживает настоящие многострочные комментарии. Это и обходные пути, которые обычно используются , могут быть проблематичными. Эту проблему можно решить, добавив новый синтаксис, чтобы комментарии могли занимать более одной строки, как вариант приведенной ниже документации, приведенной ниже.

Каковы распространенные обходные пути?

Два метода, которые я нашел здесь :

if (0) {
  
}

и

=pod

=cut

Безопасны ли они? использовать? Есть ли другие, которые работают лучше?

30
задан Lazer 31 August 2010 в 12:30
поделиться

6 ответов

Недостаток решения "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";
34
ответ дан 27 November 2019 в 23:18
поделиться

В документации 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.

15
ответ дан 27 November 2019 в 23:18
поделиться

Редактор с функцией "Область комментариев".

Например, Komodo Edit. Я почти уверен, что Eclipse и JEdit тоже это делают, но у меня нет их под рукой, чтобы проверить.

Эта функция обычно вставляет символ «Комментарий к этой строке» в начале каждой строки в выбранной области. Его преимущество заключается в том, что он не конфликтует с существующими комментариями (что представляет собой риск, если вы переносите область, содержащую многострочный комментарий, на большинстве языков)

7
ответ дан 27 November 2019 в 23:18
поделиться

Мой любимый способ многострочного комментирования — __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.
4
ответ дан 27 November 2019 в 23:18
поделиться

Одним из особых вариантов использования является комментирование нескольких строк кода. Но если вы используете систему контроля версий, вы можете просто удалить ненужный код, а не комментировать его, и, если он вам когда-нибудь понадобится, просто получите старую версию.

1
ответ дан 27 November 2019 в 23:18
поделиться

В дополнение к форме

=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 !" будет.

3
ответ дан 27 November 2019 в 23:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: