Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > как узнать,установлены модули или нет?


Автор: PuLN 8.3.2007, 22:54
Приветствую!
поставил ActiveState и не знаю,как проверить есть ли нужные мне модули или нет.
подскажите пожалуйста!

Автор: nitr 8.3.2007, 23:14
способов много, или ошибку ловить при use (require, do) или массив @INC проверять на наличии модуля...

Автор: DiverD 9.3.2007, 11:46
perl -e 'use ModuleName' если ошибки нет знач модуль есть=)

Автор: PuLN 9.3.2007, 11:56
о!мерси!

Автор: PuLN 11.3.2007, 14:00
кстати,а не в двойных кавычках?
не бейте сильно,я только учусь smile 

Автор: Filin 12.3.2007, 12:28
Два примера, того как можно посмотреть установленные модули
http://perl.3car.ru/forum/Blah.pl?m-1173692264/s-0/

Автор: amg 12.3.2007, 16:30
Один из простейших вариантов
Код

print "Ok\n" if is_module('File::Fin');

sub is_module {
  (my $name = $_[0]) =~ s|::|/|g;
  foreach (@INC) {
    my $fullname = "$_/$name.pm";
    return $fullname if -f $fullname;
  }
  return undef;
}


Автор: PuLN 13.3.2007, 12:35
Цитата(DiverD @ 9.3.2007,  11:46)
perl -e 'use ModuleName' если ошибки нет знач модуль есть=)

это в ком строке под виндой,верно?а то ошибок то нет,но как то странно..

Автор: amg 13.3.2007, 14:39
Цитата(PuLN @ 13.3.2007,  12:35)
Цитата(DiverD @ 9.3.2007,  11:46)
perl -e 'use ModuleName' если ошибки нет знач модуль есть=)

это в ком строке под виндой,верно?а то ошибок то нет,но как то странно..

Для использования в командной строке под виндой нужно одинарные кавычки заменить на двойные.

Еще в командной строке можно использовать perldoc -l Module::Name (и в скрипте тоже):
Код

if (`perldoc -l Module::Name`) {
  use Module::Name;
  ...
}

В общем, вариантов много.

Автор: arto 13.3.2007, 14:59
if (`perldoc -l Module::Name`) {
  use Module::Name;
  ...
}

5 баллов.

Автор: amg 14.3.2007, 05:58
Цитата(arto @  13.3.2007,  14:59 Найти цитируемый пост)
5 баллов.
Максимум 3.
1. Использование любой внешней программы внутри скрипта - это нехорошо, если можно легко обойтись средствами Perl.
2. perldoc может и не стоять, если у меня, к примеру, какой-нибудь самосборный дистрибутив Perl.
3. Как эта конструкция будет работать в CGI-скриптах или в скрипте, запускаемом cron'ом? Могут быть проблемы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)