Каковы общие обходные пути для многострочных комментариев в Perl?
Этот RFC упоминает
В отличие от многих языков программирования, Perl в настоящее время не реализует истинные многострочные комментарии. Это и обходные пути, которые используются совместно, могут быть проблематичными. Это можно было бы решить, добавив новый синтаксис, чтобы позволить комментариям охватывать более одной строки, например, вариант здесь - документация, приведенная ниже.
Каковы общие обходные пути?
Два метода, которые я нашел здесь,
if (0) {
<comment>
}
и
=pod
<comment>
=cut
Безопасны ли они? Есть ли другие, которые работают лучше?
Ответы
Ответ 1
Недостатком решения "если" является то, что код с комментариями все еще должен быть скомпилирован (и, следовательно, все еще должен быть проверен синтаксисом).
Недостатком решения вашего пакета является то, что ваши комментарии появятся в любой документации, созданной с помощью модуля.
Я использую версию решения pod, которая не имеет этой проблемы. Pod поддерживает = начальный формат... = абзацы окончательного формата, которые обрабатываются определенными форматировщиками. Я просто придумываю формат "комментариев", который не обрабатывается ни одним из форматировщиков, которые я использую.
=begin comment
This is ignored by everything
=end comment
Update:
Я пропустил важную часть моего примера. Вам нужно закончить секцию стружки с помощью = 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";
Ответ 2
Документация Perl сообщает вам, как это сделать в perlfaq7. Это безопасно, и поскольку мы можем сделать это с помощью Pod, нам не нужен дополнительный синтаксис для этого:
Как я могу прокомментировать большой блок Perl-кода?
Вы можете использовать встроенный POD, чтобы отменить его. Приложите блоки, которые хотите
комментируйте маркеры POD. Директива =begin
отмечает раздел для
конкретный форматтер. Используйте формат "комментарий", который не содержит форматера
должен требовать понимания (по политике). Отметьте конец блока с помощью
=end
.
# program is here
=begin comment
all of this stuff
here will be ignored
by everyone
=end comment
=cut
# program continues
Директивы pod не могут идти нигде. Вы должны положить стручок
директиву, в которой парсер ожидает нового заявления, а не только в
в середине выражения или какой-либо другой произвольной грамматической постановки.
Подробнее см. perlpod.
Ответ 3
Хотя он нестандартный, я просто использую
=ignore
sub blah { ... }
my $commented_out_var = 3.14;
=cut
Он работает так же хорошо, и напоминает мне, что это не POD.
- Кроме того: Интересно, что POD дает нам гибкую структуру для включения различных регионов, которые не должны рассматриваться как код, указывая, что означает этот регион. Ясно, что мы "комментируем ситуацию", потому что комментарии работают таким образом. Тем не менее, из термина ясно, что комментарии предназначены для слов, а не инструкций; документация без изменений.
Ответ 4
Редактор с функцией "Регион комментариев".
Например, Komodo Edit. Я уверен, что Eclipse и JEdit тоже делают это, но я не могу их проверить.
Функция обычно вставляет символ "Комментировать эту строку" в начале каждой строки в выбранной области. Он имеет преимущество не противоречить существующим комментариям (что является риском, если вы оберните область, содержащую многострочный комментарий на большинстве языков)
Ответ 5
Это тоже работает:
q^
This is another way to
add multi-line comments
to your code
^ if 0;
Ответ 6
Мое любимое многострочное устройство комментариев - __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.
Ответ 7
В дополнение к
=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
комментарий не появится в выводе pod, но Hello "Yay!" будет.
Ответ 8
В одном специальном случае комментирует несколько строк кода. Но если вы используете систему управления версиями, вы можете просто удалить ненужный код, а не комментировать его, и если вам когда-нибудь понадобится его, просто выберите старую ревизию.
Ответ 9
Что-то вроде работы тоже:
q{
my comment
};
Это выражение, которое, как мне кажется, оценивается во время работы Perl.
Ответ 10
Я использую этот способ и работаю для меня
=head
"your code to comment
monkey
banana"
=cut
Ответ 11
Еще один полезный способ!
=begin GHOSTCODE
whatever you want to uncomment
=end GHOSTCODE
=cut
Ответ 12
Это не синтаксический способ Perl, но в большинстве редакторов (например, Notepad ++) вы можете выделить код, который хотите прокомментировать, а затем нажать CTRL + K. Чтобы удалить комментарии, вы можете выделить их и нажать CTRL + Shift + K.