Можно ли определить анонимные подпрограммы в хэш-конструкторе в Perl?Можно ли определить анонимные подпрограммы в хэш-конструкторе в 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');
Тогда, похоже, все нормально. Поэтому у меня есть обходной путь, но это просто подтачивает меня, и я задавался вопросом, знает ли кто-нибудь, возможно ли это, и если да, то какой синтаксис.
В perl они называются хешами, а не ассоциативными массивами. – gpojd
Извините ... Я думаю, что издание книги верблюдов, которую я узнал из названных им ассоциативных массивов. Виноват. –