Анонимный хеш-конструктор предоставляет контекст списка объектам внутри него, потому что он ожидает список ключей и значений.Это так, потому что так оно и есть.У нас нет способа представления хэша Perl в коде, поэтому вы должны использовать список, в котором мы чередуем ключи и значения.Обозначение =>
помогает нам визуально, но не выполняет никакой магии, которая помогает Perl выяснять хеш-виды.
Текущий контекст распространяется на вызовы подпрограмм и т. Д., Как и в любой другой ситуации.
Это позволяет вам создавать хэши с помощью операций со списком:
my $hash = {
a => 'A',
map( uc, 'd' .. 'f' ),
return_list( @args ),
z => 'Z'
};
Если вам нужно что-то в скалярном контексте, просто скажите, используя scalar
:
my $hash = {
a => 'A',
map( uc, 'd' .. 'f' ),
'g' => scalar return_item( @args ),
z => 'Z'
};