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

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

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

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

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

Ответы

Ответ 1

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

    $ perltidy -boc -fws script.pl
    
  • Резервное копирование script и изменение script1.pl, script2.pl на месте

    $ perltidy -b script1.pl script2.pl
    
  • "Обфускать" script, удалив его как можно большим количеством пробелов.

    $ perltidy --mangle scipt.pl
    

Ответ 4

Как и в большинстве случаев, если вы search CPAN, у вас есть ответ быстрее, чем для входа в Stack Overflow.:)

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