Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странный хак в тандартных модулях 
:(
    Опции темы
Logo
Дата 16.2.2010, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Код

$VERSION = '2.14';
$VERSION = eval $VERSION;

Что это означает? Встречается во многих стандартных модулях.
PM MAIL   Вверх
KSURi
Дата 16.2.2010, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Превращает строку в число (SvPV в SvNV). Понадобится при сравнении версий.

А вот почему делается именно так, а не сразу числом - не знаю.

Это сообщение отредактировал(а) KSURi - 16.2.2010, 16:06


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
mvsgt
Дата 16.2.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Потому что перл создавал маньяк, решивший что чем больше путей сделать простую вещь, тем лучше. В данном случае сравнение строк:

Код

my $VERSION = '2.14_001';
warn $VERSION;
$VERSION = eval $VERSION;
warn $VERSION;



PM MAIL   Вверх
Pfailed
Дата 16.2.2010, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39





--------------------
PM MAIL   Вверх
Pfailed
Дата 16.2.2010, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Прочитал статью.
Как я понял версия задаётся в кавычках дабы её смог правильно обработать метод parse_version() из модуля ExtUtils::MakeMaker. Если не заключить в кавычки проблемы (какие именно не понял) возникнут с  версией, в которой есть знак подчеркивания (так принято именовать альфа версии модулей). eval применяется для правильного перевода строки обратно в число, если его не применить perl обрежет все что находится за знаком подчеркивания (perl по разному конвертирует строки в числа в момент исполнения и во время компиляции).


Это сообщение отредактировал(а) Pfailed - 16.2.2010, 20:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.