eval $VERSION

31 мар 2015 17:07


Часто встречал в модулях подобную запись

our $VERSION = '1.200';
$VERSION = eval $VERSION;

Только не было понятно зачем нужен eval. Как оказалось, это задокументированная фича . Такие сборочные утилиты, как ExtUtils::MakeMaker ищут лишь первую строку с $VERSION, чтобы извлечь информацию о версии модуля. Сам же модуль может в последующем использовать числовое представление версии, которое преобразуется из строки с помощью eval.

С одной стороны, если версия это строка 1.200, то явное преобразование не требуется, но если это бета-версия, например, 1.199_01, то попытка использования такой строки в числовом выражении будет выводить предупреждение:

$ perl -we 'our $VERSION="1.199_01"; my $newer_than_1_2 = $VERSION > 1.2;'
 
Argument "1.199_01" isn't numeric in numeric gt (>) at -e line 1

Вызов eval как раз и решает подобную проблему.


Комментарии 2


Переезд домена к другому регистратору

26 янв 2015 13:12


Перенёс домен блога truecrux.org от reg.ru к зарубежному регистратору. Насколько уже могу судить, переезд прошёл гладко. Трансфер я делаю впервые, поэтому было интересно посмотреть все стадии процесса. Для международных доменов процесс переезда прост: у текущего регистратора запрашивается EPP-код , передаётся новому, а затем в течении 5 дней старый регистратор передаёт домен. Единственно удивило, что reg.ru требует скан паспорта для подобной операции.

P.S. И да, undzilit4.me переехал на субдомен undzil.truecrux.org


Комментарии 0


Разница между all и everything

12 янв 2015 12:30


Иногда в разрабатываемую версию Perl проталкивают решения, от которых хочется поднести ладони к лицу -_\

В этот раз под раздачу попал механизм предупреждений, когда из соображений обратной совместимости отвергается здравый смысл...

Дальше


Комментарии 0


Обновление блога

07 сен 2014 22:38


Немного подновил внешний вид блога (да-да, нежно любимый bootstrap) и перевёл сайт на https. Была идея запустить его также поверх протокола http2 (на веб-сервере Shuvgey ), но пока в нём не реализован откат на http/1.1, блог будет недоступен для всех браузеров, кроме последних версий Firefox. Так что, пока фича не реализована пусть будет традиционное решение...


Комментарии 0


Протокол HTTP/2 и его реализация

20 май 2014 11:58


Работа над новым протоколом для всемирной сети находится на завершающем этапе. HTTP/2 должен решить многие застарелые проблемы HTTP/1.1 и дать возможность Интернету развиваться дальше. Есть довольно хорошая статья «http2 explained» , посвященная новому протоколу HTTP/2, разъясняющая предпосылки его создания и наглядно демонстрирующая его возможности и принципы работы. Статья, тем не менее, не содержит какой-либо детальной технической спецификации протокола. Есть также отличная книга Ilya Grigorik «High-Performance Browser Networking» , веб-версия которой свободно доступна , и которая также содержит интересные детали о прародителе HTTP/2 - SPDY и самом HTTP/2 (правда уже немного устаревшие). После её прочтения я вдохновился создать реализацию HTTP/2-протокола и в процессе досконально изучить новый протокол. Эта статья - небольшой отчёт за последние два месяца убитого свободного времени.

Дальше


Комментарии 1


Сборка Perl 5.18.1

05 сен 2013 07:04


Завершилось обновление Perl до версии 5.18.1 в репозитории ALTLinux Sisyphus.

Как обычно, при смене мажорной версии Perl происходит изменение API libperl, что означает, что требуется пересборка всех программ и модулей слинкованых с libperl.so. В отличии от многих других вендоров в ALTLinux нельзя просто так взять и обновить библиотеку, сломав сотни зависимых программ. Чтобы новая библиотека прошла в репозиторий для разработчиков, должна быть создана транзакция в сборочной системе, в рамках которой происходит сборка новой библиотеки и выполняется пересборка всех зависимых приложений. В случае с Perl 5.18.1 такая транзакция состояла из 320 пакетов.

Как обычно, процесс пересборки начинается с мучительного вспоминания, а как проходит эта процедура и с чего начинать. Поэтому я решил сделать подробную заметку о деталях сборки для тех, кто будет в будущем собирать версию 5.20 и последующие.

Дальше


Комментарии 0


Почему надо постоянно обновляться до новых версий Perl

20 май 2013 13:57


В Perl5 как наверно ни в одном другом языке программирования нет такой тщательной заботы об обратной совместимости. Многие модули CPAN отлично работают на самых древних версиях интерпретатора Perl, вышедших ещё в прошлом тысячелетии. Более того, некоторые авторы с большим удовольствием сообщают в ChangeLog, что в новом релизе исправлены проблемы совместимости с версиями Perl, например, 5.6. Всё это может создавать ложное ощущение у программиста, что выпускаемые новые версии Perl - это не более чем косметические изменения и настоящему труъ хакеру нужен только 5.8.1 или даже 5.6.1 - ведь они стабильны как скалá (не путать со Scala), работают быстрее чем новомодные релизы, да и CPAN продолжает их поддерживать. На самом деле, всё это конечно не так. Развитие кода в рамках старого интерпретатора — это процесс, которые со временем приводит к возрастанию сложности проекта, поскольку помимо кода самого проекта возникает задача тянуть поддержку старого интерпретатора и его багов, а вырваться из этой ловушки со временем становиться всё труднее.

Дальше


Комментарии 0


Баг libgd #177

19 апр 2013 12:08


Разбирался с ошибкой в тесте Perl модуля GD. Сравните картинки, которая должна быть и какую в реальности формирует третий тест в t/GD.t.

Как видно, не происходит заполнение одной из областей синим цветом. Удивительно, но баг воспроизводится только на 32-битной платформе x86. В чём же дело?

Дальше


Комментарии 0


Спектральный анализ сигнала в Perl

05 фев 2013 15:39


Возникла интересная задача - проверить аудио-запись на наличие в нём сигнала той или иной частоты. Например, нужно настроить гитару, а тюнера под рукой нет, а со слухом так всё плохо, что настройка может закончиться лопнувшими струнами или нервами .)

Оказывается на CPAN есть модуль, который может помочь нам сделать это без особого труда - Math::FFT

Дальше


Комментарии 0


MurmurHash - новая хэш-функция в Perl 5.17.6

21 ноя 2012 22:01


Существенным изменением в Perl 5.17.6 стала установка по умолчанию новой хэш-функции MurmurHash (v3) и введение по-настоящему случайного порядка следования ключей в хэш-таблице (ассоциативном массиве). Изменение прошло как-то обыденно и незаметно, но думаю, что это будет достаточно заметной фичей будущего стабильного релиза.

Дальше


Комментарии 0