передача параметров с помощью Perl с использованием отражения - PullRequest
0 голосов
/ 16 августа 2011

У меня есть следующий модуль Perl:

package module 

sub test1{
  my @data=@_
  print @data;
}

Когда я вызываю этот модуль из сценария Perl, используя:

my $test='test1';
my $full_name = "Module::" . $test; 
my @data=(1,2,3)

no strict 'refs'; 
$full_name->(@data);

Я не получаю результата на стандартный вывод, но я ожидал 1,2,3. Может кто-нибудь объяснить, почему?

1 Ответ

1 голос
/ 16 августа 2011

Похоже, вы неправильно настраиваете модуль.

Запуск следующего автономного скрипта дает правильный результат:

{package Module;
    sub test1 {print "test1: @_\n"}
}

my $test = 'test1';
my $full_name = 'Module::'.$test;
my @data = (1, 2, 3);

no strict 'refs';

$full_name->(@data);  # test1: 1 2 3

Трудно сказать, не видя точно, что у вас есть, но есть вероятность, что вы забыли включить строку package Module; в верхней части вашего модуля. Пакет не устанавливается неявно через имя файла, вы должны объявить его в верхней части файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...