В чем причина отсутствия более простого многострочного комментария в Perl? - PullRequest
5 голосов
/ 16 февраля 2011

Я знаю разные способы введения многострочных комментариев в Perl. Но я хочу знать, почему в нем нет более простой функции многострочного комментария, такой как /* comment */, которая облегчила бы ее.

В настоящее время я следую http://www.perlmonks.org/?node_id=560985 для получения многострочных комментариев. Есть ли планы включить эту функцию в Perl в ближайшее время?

Ответы [ 4 ]

11 голосов
/ 16 февраля 2011

Комментарии в стиле C сопровождаются множеством сложных проблем, в том числе невозможностью комментировать комментарии. Кроме того, удобный синтаксис для одной строки поощряет сжатое написание, что облегчает чтение вашего кода. Отсутствие 10-строчных блоков «Author: ... Input: ... Output: ... Favorite Color: ...», которые вы время от времени видите в C и C ++, является еще одним преимуществом.

Многострочные комментарии поощряют длинную запись, которая лучше выражена более кратко или в виде документации, поэтому Perl поощряет это с помощью операторов # и =pod (соответственно).

Наконец, если у вас возникли проблемы со стилем комментирования в Perl, вы должны настроить редактор для редактирования программ, а не текста. В Emacs, если вы начнете писать что-то вроде # this is a comment that is getting longer and longer and longer and oh my goodness we are out of space on this line what to do now и наберете M-q , Emacs будет автоматически вставлять # в начале каждой создаваемой строки.

Если вы просто хотите закомментировать блок кода, вам нужно смотреть не дальше, чем M-x comment-region и M-x uncomment-region, что закомментирует регион практически на любом языке; в том числе Perl.

Не переживайте по поводу синтаксиса комментариев; это работа компьютера!

6 голосов
/ 16 февраля 2011

Об этом говорилось в списке рассылки perl6-language@perl.org. Хотя, в конце концов, обсуждение было неокончательным, резюме, опубликованное здесь , делает его интересным для чтения.

3 голосов
/ 16 февраля 2011

Как и в случае любой многострочной структуры комментариев, будут иметь место условия «открытого» и «закрытого» комментариев, что приводит к проблемам с вложенными комментариями.

например, C использует / * как открытие и * / как закрытие. Как система многострочных комментариев обрабатывает комментарии в комментариях? C потерпит неудачу, если вы попытаетесь прокомментировать уже прокомментированный блок.

Обратите внимание, что строчные комментарии (например, c ++ // comments) не страдают от этой проблемы.

0 голосов
/ 16 февраля 2011

Простота в глазах смотрящего. Тем не менее, уже есть несколько способов сделать многострочные комментарии. Во-первых, пустые строковые литералы:

q{This text won't do anything.
Neither will this.};

У этого неприятного побочного эффекта срабатывает предупреждение:

Useless use of a constant in void context at - line 4.

Другой вариант - использование heredoc в пустом контексте - по некоторым причинам это не вызывает предупреждение:

<<ENDCOMMENT;
Foo comment bar.
ENDCOMMENT

Как видите, проблема не в отсутствии синтаксиса как такового (комментарии к документам на Python выглядят смутно похожими на метод q{} на самом деле) - это скорее просто то, что сообщество программистов на Perl остановилось на строковых комментариях используя # и POD. Использование другого метода на этом этапе просто запутает людей, которым придется читать ваш код позже.

...