Perl: проблемы с вызовом подпрограмм по ссылке с использованием хеш-значения


В Perl вы можете вызывать функция по ссылке (или имени), например так:

    my $functionName = 'someFunction';
    &$functionName();

    #someFunction defined here:
    sub someFunction { print "Hello World!"; }

То, что я пытаюсь сделать, это использовать значение из хэша, например так:

    my %hash = (
        functionName => 'someFunction',
    );

    &$hash{functionName}();

    #someFunction defined here:
    sub someFunction { print "Hello World!"; }

И я получаю сообщение об ошибке: глобальный символ "$hash" требует явного имени пакета.

Мой вопрос: есть ли правильный способ сделать это без использования промежуточной переменной?
Любая помощь по этому вопросу будет принята с благодарностью!

5
задан Thumper 20 June 2012 в 17:13
поделиться