У меня есть следующий тестовый код
use Data::Dumper;
my $hash = {
foo => 'bar',
os => 'linux'
};
my @keys = qw (foo os);
my $extra = 'test';
my @final_array = (map {$hash->{$_}} @keys,$extra);
print Dumper \@final_array;
Вывод
$VAR1 = [
'bar',
'linux',
undef
];
Разве элементы не должны быть "bar, linux, test"?Почему последний элемент не определен и как мне вставить элемент в @final_array?Я знаю, что могу использовать функцию push, но есть ли способ вставить ее в ту же строку, что и команда map?
По сути, манипулируемый массив предназначен для использования в команде SQL в реальном скрипте, и я хочу избежать использования дополнительных переменных до этого и вместо этого сделать что-то вроде:
$sql->execute(map {$hash->{$_}} @keys,$extra);