2010-03-02 5 views
3

Можно ли добавить тег -w в первую строку программы perl, а затем запустить программу из оболочки, например bash или dos, и записать все предупреждения в файл?Получение результатов тега perl -w в файл

perl somescript.pl > somefile.txt 

Это ответ на проверку программ COBOL в школе. Я бы хотел, чтобы все предупреждения были передо мной на листе бумаги, чтобы я мог пройти свою программу и исправить их по очереди. Если вышеуказанная команда не работает, есть ли способ программно получить все предупреждения скрипта в файл? Спасибо, парни!

ответ

4

Попробуйте это:

perl somescript.pl 2&> somefile.txt 

При использовании простого перенаправления (>), вы только перенаправить стандартный поток вывода программы, в то время как предупреждения спасаются к стандартной ошибки выходной поток. См. Например, Bash Reference Manual.

В CPAN также есть модуль Vi::QuickFix, который может сохранять предупреждения в файле, который вы можете загрузить в Vim, и проверить все предупреждения, не просматривая номера строк вручную. (Google за vim quickfix.) Я сам не пробовал.

1

zoul обработал материал перенаправления, так что вот удивительно сложный ответ на предупреждения.

Просто позвоните программе так: perl -w script.pl

Это заставляет предупреждения быть включено везде в сценарии и все модули. Лучше использовать прагму предупреждений в каждом модуле, который вы пишете. См. perldoc perllexwarn для получения дополнительной информации по этому вопросу.

Другим трюком, который хорош при отладке, является использование Carp::Always. Если для каждой ошибки создается полная трассировка стека. Я нахожу это очень полезным. Просто запустите скрипт так:

perl -MCarp::Always somescript.pl 

или получить его в файл:

perl -MCarp::Always somescript.pl 2&> somefile.txt 

И, наконец, я отвлекся от вашего вопроса немного больше. Многим нравится использовать свой код, используя библиотеку регистрации, такую ​​как Log4Perl. Такие инструменты позволяют включать ведение журнала на определенном уровне (например, обычное или отладочное) или через определенные части вашего приложения на отдельных прогонах вашего кода. Это окончательная (?) Эволюция отладочной инструкции печати. Это может быть весьма полезно при сбоях отладки во время разработки и в поле после того, как вы достигли фазы обслуживания.

 Смежные вопросы

  • Нет связанных вопросов^_^