Включить глобальные предупреждения - PullRequest
3 голосов
/ 18 января 2011

Мне нужно оптимизировать интранет, написанный на Perl (около 3000 файлов). Первое, что я хочу сделать, это включить предупреждения "-w" или "use warnings;", чтобы я мог избавиться от всех этих ошибок, а затем попытаться реализовать "use strict;".

Есть ли способ заставить Perl постоянно использовать предупреждения (например, настройки в php.ini для PHP), без необходимости изменять каждый скрипт для добавления «-w» в его первую строку?

Я даже подумал сделать псевдоним для /usr/bin/perl или переместить его на другое имя и сделать вместо него простой скрипт, просто добавив флаг -w (как прокси).

Как бы вы его отладили?

Ответы [ 3 ]

12 голосов
/ 18 января 2011

Ну ...

Вы могли бы установить для PERL5OPT значение, равное -w.См. perlrun manpage для подробностей.Я надеюсь, вы тоже подумаете о порке, например, -T или, может быть, -t, для отслеживания безопасности.

Но я вам не завидую.Код дооснащения, разработанный без использования use warnings и use strict, обычно представляет собой королевский PITA.

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

9 голосов
/ 18 января 2011

Дооснащение предупреждений и строгий жесткий. Я не рекомендую подход Большого взрыва, устанавливая предупреждения (не говоря уже об ограничениях) на все. Вы будете завалены предупреждениями до бесполезности.

Вы начинаете с того, что включаете предупреждения для модулей, используемых скриптами (они есть, не так ли?), А не применяете предупреждения ко всему. Очистите ядро, затем приступайте к работе на периферии, по одному устройству за раз. Так что, на самом деле, я бы порекомендовал иметь простой (Perl) скрипт, который просто находит строку, которая не начинается с хеша и добавляет use warnings; (а может и use strict; тоже), поскольку вы собираетесь иметь дело с по одному сценарию за раз), поэтому вы можете выполнять обновления по одному сценарию за раз.

Другими словами, вам, вероятно, лучше всего будет отредактировать каждый файл, так как вы собираетесь его обновить.

Я бы использовал опцию «Одеяло» только для простой оценки масштабов проблемы: это полная и полная катастрофа, или просто несколько peccadilloes в нескольких файлах. К сожалению, если код был разработан без предупреждений и строгий, он скорее будет «катастрофой», чем «минимальной».

Вы можете обнаружить, что ваши предшественники были склонны к копированию и вставке, и некоторые ошибочные идиомы неоднократно возникают в скопированном коде. Напишите Perl-скрипт, который исправит каждый из них. У меня есть несколько сценариев fix* в моем личном каталоге bin, которые имеют дело с различными изменениями - либо исправлением проблем, созданных непокорными (или, как правило, просто давно ушедшими) коллегами, либо с учетом моих собственных меняющихся стандартов.

5 голосов
/ 18 января 2011

Вы можете установить предупреждения и ограничения для всех сценариев Perl, добавив -Mwarnings -Mstrict в переменную среды PERL5OPT. Подробнее см. perlrun.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...