Forum Webscript.Ru

Программирование => Perl => Тема начата: cr4ck3r от 21 Июня 2005, 13:05:25

Название: Вызов функции
Отправлено: cr4ck3r от 21 Июня 2005, 13:05:25
У меня есть скрипт script.pl, который использует модуль Module.pm.
В скрипте определяется переменная $type, а модуль содержит несколько функций вида:

sub query_one { }; sub query_two { };

Я из скрипта пытаюсь вызвать функции модуля так:
my $type=\'one\';

my $query=Module::query_$type();

на что мне выдается сообщение о том что функции query_ нет в пакете Module. Что я тут пропустил подскажите? Знаю что где-то встречал такие вопросы - но не нашел где.
Название: Вызов функции
Отправлено: ondr от 21 Июня 2005, 14:27:26
{
  my $func = "Module::query_${type}";

  no strict \'refs\';

  $query = &{$func}();
#  $query = $func->();
}


perldoc perlref
Название: Вызов функции
Отправлено: cr4ck3r от 21 Июня 2005, 15:23:21
ondr спасибо.
А тогда чтоб еще одну тему не плодить, подскажите как решить еще одну задачку.
Есть пустой хэш %DATA, и есть два массива @KEYS и @VALUES, с названиями ключей и их значениями соответственно. Как мне внести в хэш эти массивы, чтобы значения ключей указывали на соответствующие значения в массиве @VALUES. Массивы не большие по 6-8 элементов.
Спасибо.

P.S
Бессоная ночь дает сбои в голове...
Название: Вызов функции
Отправлено: ondr от 21 Июня 2005, 15:30:36
пожалуйста
@DATA{ @KEYS } = @VALUES
Название: Вызов функции
Отправлено: cr4ck3r от 21 Июня 2005, 16:42:49
ondr
спасибо большое... Пойду спать :)