Forum Webscript.Ru

Программирование => Perl => Тема начата: RAiDER от 03 Октября 2002, 14:24:45

Название: Проблема с require Time::Local; под Win9x
Отправлено: RAiDER от 03 Октября 2002, 14:24:45
Я начинающий работу с Перлом вебмастер и вопрос мой наверняка ламерский. Но прошу не игнорировать его.

Ставлю себе Links2 и пытаюсь сделать так, чтобы он работал полноценно под Win98SE.

В качестве сервера стоит Апач 1.3.20 подключены Perl, PHP, MySQL.
Все работает нормально, кроме одной вещи: :confused:

1. При попытке создать или модифицировать ссылку через админский интерфейс (admin.cgi) Links2 не хочет работать и пишет следующее:
fatal error: Can\'t locate Time/Local.pm in @INC (@INC contains: \\HOME\\CGI-BIN\\ADMIN .) at \\HOME\\CGI-BIN\\ADMIN/links.cfg line 161.

Строка 161 файла links.cfg входит в sub date_to_unix и имеет следующий вид:

require Time::Local;

Весь sub такой:
Цитировать

sub date_to_unix {
#=========================================
    my $date = shift; my $i;
    my %months = map { $_ => $i++ } qw!Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec!;
    my ($day, $mon, $year) = split(/-/, $date);
   
    exists $months{$mon} or return undef;
    $day = int($day); $year = $year - 1900;
   
    require Time::Local;
    my $time = 0;
    eval {
        $time = &Time::Local::timelocal(0,0,0, $day, $months{$mon}, $year);
    };
    if ($@) { die "invalid date format: $date - parsed as (day: $day, month: $months{$mon}, year: $year). Reason: $@";  }
    return $time;
}


Сам sub я не изменял. Все прописано как были по умолчанию.
Догадываюсь, что проблема возможно в том, что работа идет под Win98, но как исправить не знаю :(

Пробовал работать в Апаче 1.3.26, такая же проблема.

Повторяю, что это не работает у меня на локальном сервере под Windows 98SE. При загрузке на сервер все работает нормально, но хочется, чтобы и на локальном компьютере все было в порядке.

Если кто сможет помочь, буду очень признателен.
Или подскажите где почитать про это. Вроде по форуму поискал и не нашел ничего об этой проблеме.

=====================
С уважением,
RAiDER.
Название: Проблема с require Time::Local; под Win9x
Отправлено: lalex от 04 Октября 2002, 10:48:01
Попробуй исправить:
Цитировать
require Time::Local;

на use Time::Local;

Цитировать
$time = &Time::Local::timelocal(0,0,0, $day, $months{$mon}, $year);

на $time = timelocal(0,0,0, $day, $months{$mon}, $year);
Название: Проблема с require Time::Local; под Win9x
Отправлено: RAiDER от 04 Октября 2002, 11:52:49
После такого исправления admin.cgi вообще не запускается.
Прлучается следующая ошибка:
Цитировать
Error including libraries: Can\'t locate Time/Local.pm in @INC (@INC contains: \\HOME\\CGI-BIN\\ADMIN .) at \\HOME\\CGI-BIN\\ADMIN/links.cfg line 161.
BEGIN failed--compilation aborted at \\HOME\\CGI-BIN\\ADMIN/links.cfg line 161.
Compilation failed in require at \\HOME\\CGI-BIN\\ADMIN\\ADMIN.CGI line 27.

Make sure they exist, permissions are set properly, and paths are set correctly.


Что можно еще попробовать?
Название: Проблема с require Time::Local; под Win9x
Отправлено: lalex от 04 Октября 2002, 12:21:57
Странно, твой @INC не содержит перловских библиотечных путей.
В этом случае можно найти модуль local.pm и закинуть его в дир. скрипта, но это не есть правильно.
Название: Проблема с require Time::Local; под Win9x
Отправлено: RAiDER от 04 Октября 2002, 14:21:36
Опять ничего хорошего :(
Закачал файл Local.pm и закинул его в директорию \\HOME\\CGI-BIN\\ADMIN
Все равно пишет ту же самую fatal error. Пробовал два варианта.
Хотя, ведь этот Local.pm для Пингвина, может он в Win98 не работает?

Может проблема в чем-то другом? Может в виндах? Может их переустановить? Но не хочется все снова устанавливать по-новому.

Неужели нельзя вылечить этот глюк?
Название: Проблема с require Time::Local; под Win9x
Отправлено: lalex от 04 Октября 2002, 14:45:13
чето ты путаешь.
как я понял скрипт у хостера работает, а на лок. компе нет.
почему то, в массиве @INC, в кот. хранятся пути доспупные скрипту, нет перловских путей. Может перл криво поставлен???
А Local.pm не надо откуда-то качать, ты просто находишь его в перловском каталоге на своей машине и копируешь в каталог скрипта, опять же на своей машине.
Причем тут пингвин????
Название: Проблема с require Time::Local; под Win9x
Отправлено: RAiDER от 04 Октября 2002, 16:56:12
Заработало! :super:

Поставил нормальный Perl и все нормально стало работать.
Дело в том, что у меня стоит так называемый "Базовый комплект Д.N.W.P.", http://www.dklab.ru/chicken/web , а тот Perl, который в него входит и выдовал вышеназванную ошибку.
Поставил Active Perl и все стало нормально работать.

Спасибо тебе, lalex, если бы не твоя светлая голова, то мои кривые ручонки...


Думаю, что тему можно считать закрытой![/I]
Название: Проблема с require Time::Local; под Win9x
Отправлено: КшЫуфксрук от 04 Октября 2002, 18:59:18
>Дело в том, что у меня стоит так называемый "Базовый комплект Д.N.W.P."

А когда документацию читать будем? Там ведь русским языком написано: "Ядро ActivePerl без стандартных библиотек.". А библиотеки лежат рядом и их нужно ставить отдельно.