Пришлось сегодня вспоминать Perl для написания очередного скрипта.
И вот зачем.
Есть у меня в проекте функция, которая создает БД и набор таблиц в ней. В функции для этого имеется массив соответствующих SQL-выражений:
const char *sqlst[] = {
//table of groups of sdo
“CREATE TABLE sdogroups(”
“hgdomain INTEGER PRIMARY KEY AUTOINCREMENT,” //handle of SDO’s group
“groupName TEXT)”, //name of group
//table of sdo’s names
“CREATE TABLE sdos(”
“hsdo INTEGER PRIMARY KEY AUTOINCREMENT,” //handle of SDO
“hgdomain INTEGER,” //handle of SDO’s group
“sdoName TEXT)”, //name of SDO
Но каждый раз смотреть исходник, чтобы вспомнить что делает функция - моветон. ЛенивыеГрамотные программисты генерят документацию doxygen’ом, а потом смотрят ее броузером. В данном случае пришлось написать вспомогательный скрипт, чтобы не дублировать информацию о генерируемых таблицах в кода функции и в h-файле. Perl вспоминать пришлось, т.к. последние пару лет мне хватало sed’a и awk, но здесь скрипт более сложный. Весь текст скрипта приводить не буду, т.к. он занимает целых 30 строк. Самые главные строки следующие:
#extract name of field, type and comments
$str =~ /^.*?\“(\w+) +(.*),\”(.*\/\/(.*)|.*)$/;
print “$1$2”;
$comm = $3;
$comm =~ s/^.*\/\///;
print “ $comm\n”;
Здесь я выковыриваю из строки соответствующие поля и создаю запись в html-табличке. Осталось только подсунуть созданный файл doxygen’у.
Вообще, любой сложный проект обрастает кучей скриптов, которые упрощают жизнь ленивымграмотным программистам.