Вызов хеш-функции Perl - PullRequest
1 голос
/ 17 июня 2019

Как вы вызываете функцию из хеш-значения?

%hash = { "1" => \&some_function } ; # this function has one parameter
sub some_function {
  my $arg = $_[0];
  return $arg;
}
$hash{"1"}->($arg); <-- tried this but doesn't work.

Ответы [ 2 ]

6 голосов
/ 17 июня 2019

%hash - это хеш. { "1" => \&some_function } является ссылкой на хеш. Вам нужен один из следующих вариантов:

$hash = { "1" => \&some_function };
$hash->{"1"}->($arg);

или

%hash = ( "1" => \&some_function );
$hash{"1"}->($arg);

Подробнее см. perldata и perlref .

4 голосов
/ 17 июня 2019

Чтобы объявить хеш, используйте круглые скобки. Фигурные скобки предназначены для хеш-ссылок / анонимных хешей.

%hash = ( 1 => \&some_function );
sub some_function {
    my $arg = $_[0];
    return $arg
}
$hash{1}($arg);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...