Class::Singleton - траблы в mod_perl
Во время отладки сайта под mod_perl2, столкнулся с воистину мистичным глюком. Мне там потребовались небольшие проверки текущей timezone, ну и манипуляции по-необходимости, использовался пакет DateTime. Сообщение в логе загнало меня в ступор
Итак, сухой остаток: открывая исходник, видим в первых рядах следующую строку:
Самое забавное во всей истории - из трех различных серверов, ошибка возникала лишь на одном (который Debian 6 под Xen, если интересно). Вероятно, вследствие набора случайных факторов.
Из этой занимательной истории возникает полезный вывод: всегда заключайте версию модуля в кавычки. Подальше от греха..
Invalid version format (non-numeric data) at /usr/local/share/perl/5.10.1/DateTime/TimeZone/Europe/MoscowСправедливости ради, это сообщение не только для Moscow.pm выскакивало. В общем, потребовались глубокие разборки и внимательный просмотр исходных текстов модуля DateTime. Здесь опущу описание душевных мук, в процессе расследования подозрение пало на Class::Singleton (версия 1.4 от 28 Sep 2007).
BEGIN failed--compilation aborted at /usr/local/share/perl/5.10.1/DateTime/TimeZone/Europe/Moscow.pm line 17.
....
Attempt to reload DateTime/TimeZone/Europe/Moscow.pm aborted.
Итак, сухой остаток: открывая исходник, видим в первых рядах следующую строку:
our $VERSION = 1.4;Ищем на своем компе, где модуль прописался (у меня, к примеру, /usr/local/share/perl/5.10.1/Class/Singleton.pm), открываем его в текстовом редакторе, и аналогичную строку заменяем на our $VERSION = '1.4';т.е. просто заключаем в одинарные кавычки. И (о, чудо!) - глюк немедленно пропал. Самое забавное во всей истории - из трех различных серверов, ошибка возникала лишь на одном (который Debian 6 под Xen, если интересно). Вероятно, вследствие набора случайных факторов.
Из этой занимательной истории возникает полезный вывод: всегда заключайте версию модуля в кавычки. Подальше от греха..
