Версия 50.32 (49.32) довольно стабильная, есть несколько непринципиальных мелких исправлений, которые я внес уже после выхода, но думаю закончить 50(49) ветку на ней. Погоняйте ее и объявим stable.
Дальнейшее развитие будет 52 и 51 ветка. В данный момент я занят тем, что причесываю весь код так, чтобы его было удобнее понимать со стороны, а также дописывать/адаптировать.
Т.е я хочу поднять слегка качество кода ибо проект развивается очень долго. Главные проблемы качества, это:
1) большое количество глобальных переменных
2) не использование use strict
Первую проблему я уже практически решил, 2я требует еще какое-то время. Изменений много, поэтому будет какое-то время тестироваться.
Подробнее о проблемах.
Глобальные переменные, конечно, зло. Встречается в тексте, скажем, переменная $m_tarif - возникает вопрос, откуда она? где объявлена? что обозначает?
В перле есть несколько способов группирования сущностей. Я решил использовать package, которые изолируют пространства имен. Так у меня все настройки теперь "хранятся" в packagе cfg:
$cfg::Nodeny_dir
$cfg::Reload_Nets_Time
и т.д
Привилегии администратора: $pr::SuperAdmin, $pr::show_traf, $pr::show_fio и т.д
Данные администратора: $Adm::
Данные сессии: $ses::
и т.д.
Языковые переменные теперь не имеют префикса $Lang_, а тоже имеют свое пространство $Lang:: - так что пока не спешите писать свои языковые файлы, подождите некоторое время.
Также некоторые модули тоже изолированы в паккаджи, а некоторые оформлены как ООП), в частности модуль выполнения sql-запросов, например:
$nsql=nSql->new({
dbh => $dbh,
sql => "SELECT * FROM users",
show => 'line',
comment => 'Все клиенты'
});
while( $nsql->get_line( [\%h] ) ) {
$OUT.="$h{id} = $h{name}".$br
}
2) use strict в основном позволяет выудить какое-то количество опечаток, что случаются, а главное постоянно мешает юзать глобальные переменные, что заставляет писать код минимально их используя
Итого. В основном сейчас занят в причесывании уже имеющегося кода так, чтобы его можно было лучше понимать, а главное дописывать свои фичи, используя ужа разработанные подпрограммы, не боясь что-то сделать не так.
Если у кого-то есть предложения по этому поводу - выссказывайтесь