Можно ли определить анонимные подпрограммы в конструкторе хеша в Perl?
Я пытаюсь сделать что-то вроде этого:
my %array = { one => sub { print "first $_[0]" },
two => sub { print "next $_[0]" },
three => sub { print "last $_[0]" }};
$array{$foo}->('thing');
Но это не работает. Кажется, что код запускается и компилируется, но значения в массиве пустые. Если я сделаю это:
my %array;
$array{'one'} = sub { print "first $_[0]" };
$array{'two'} = sub { print "next $_[0]" };
$array{'three'} = sub { print "last $_[0]" };
$array{$foo}->('thing');
Тогда, кажется, работает нормально. Таким образом, у меня есть обходной путь, но он просто беспокоит меня, и я задавался вопросом, знает ли кто-нибудь, возможно ли это, и если да, то каков синтаксис.