пятница, февраля 08, 2008

Получить список используемых модулей в проекте perl

Вычитал на Mechanix что для того чтобы узнать какие модули используются perl-проектом, достаточно запустить в директории с ним вот такое:
ack -h '^use\s+(\w+(?:::\w+)*).*' --output=\$1 | sort -u

Ну как вобщем я увидел сразу - этого не достаточно. Потому что не учитываются например базовые классы, которые я использую с помощью use base qw(ModuleName), и почему-то не учитываются варианты когда use написан не вначале строки а с отступом поэтому я быстренько(не мудрствуя особо) дополнил эту команду до такой:
ack -h '^\s*use\s+base\s+(?:qw\()*\s*(\w+(?:::\w+)*)|^\s*use\s+(\w+(?:::\w+)*).*' --output=\$+ | sort -u


Тут конечно тоже не всё учтено, но уже лучше по крайней мере. В этом варианте не учитываются классы из @ISA, не учитывается множественное наследование через base - так что это не универсальный вариант. Но кому надо - сам допишет что ему нужно.

P.S. Для тех кто не в курсе что такое ack: http://petdance.com/ack/

Комментариев нет: