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

Кошка в моей компании прошлась по клавиатуре и оставила для меня действительную 1000+ строк исполняемого кода Perl для поддержки.

Благодаря философии Perl TMTOWTDI, я ловлю себя на поиске в Google, чтобы разобраться в каждой строчке написанного ею кода.

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

Как я могу автоматически привести этот код Perl в нормальное русло? Да, я уверен, что будет какой-то модуль CPAN, который делает это. Как насчет какого-то внешнего инструмента? Любые подсказки?


person Ankur Gupta    schedule 16.10.2010    source источник


Ответы (5)


Perl::Tidy может сделать это и многое другое. Обычно он используется через исполняемый файл perltidy, который он устанавливает.

person rafl    schedule 16.10.2010

Perl Tidy — действительно полезная утилита. Он поставляется с огромным набором опций.
Некоторые рекомендации можно найти на странице http://perltidy.sourceforge.net/ и http://perltidy.sourceforge.net/tutorial.html

Например, -i=8 переопределяет количество пробелов для отступа (по умолчанию = 4), а -bl помещает фигурные скобки в новую строку:

 if ( $something )
 {
     print ".....";
 }

Я бы предложил поиграть на копии кода и посмотреть, какой вариант вам больше нравится.

Вы можете либо установить его из CPAN, либо использовать другие варианты на http://perltidy.sourceforge.net/ в зависимости на вашей платформе и вкус!

person justintime    schedule 16.10.2010

Вот несколько примеров использования perltidy с нестандартным поведением:

  • Включите обнимашки (например, } else {), ограничьте длину строки до 300 символов для всех файлов .pl.

    $ perltidy -ce -l=300 *.pl
    
  • Поддерживать старые точки останова в виде запятых, замораживать существующие пробелы в script.pl

    $ perltidy -boc -fws script.pl
    
  • Сделайте резервную копию скрипта и измените script1.pl, script2.pl на месте

    $ perltidy -b script1.pl script2.pl
    
  • «Запутать» сценарий, удалив из него как можно больше пробелов.

    $ perltidy --mangle scipt.pl
    
person Zaid    schedule 16.10.2010

Как и в большинстве случаев, если вы поищите в CPAN, вы получите ответ быстрее, чем он позволяет войти в Stack Overflow. :)

В данном случае это Perl::Tidy, как уже упоминалось другими людьми. У нас также есть более подробные советы по этому поводу в разделе Эффективное программирование на Perl.

person brian d foy    schedule 16.10.2010

Вы также можете использовать онлайн-инструмент http://www.cleancss.com/perl-beautify/. .

person jing    schedule 02.05.2016