у myFavourite объявлен хэш, но он используется как массив?
Да, и возвращает список.Это кусок хеша.См .: http://perldoc.perl.org/perldata.html
Думайте об этом как о расширении массива @fruits в несколько поисков хеш-ключей.Синтаксис @hash {@keys} - это просто удобный способ извлечения частей хеша.
В частности:
@myFavourite{@fruits}
эквивалентно:
($myFavourite{'Apple'},$myFavourite{'Orange'},$myFavourite{'Grape'})
который возвращает список из трех элементов при вызове в контексте списка или объединение всех трех элементов в скалярном контексте (например, печать)
my @slice_values = @myFavourite{@fruits}
# @slice_values now contains ('Apple',undef,undef)
# which is functionally equivalent to:
my @slice_values = map { $myFavourite{$_} } @fruits;
Если вы хотите извлечь хеш-значения только с ключами, выполните:
my @favourite_fruits = @myFavourite{ grep { exists $myFavourite{$_} } @fruits };
# @favourite_fruits now contains ('Apple')
Если вы:
use warnings;
, вы увидите предупреждения интерпретаторов о том, что два неинициализированных значения автоматически автовивифицированы как undef.