$extra正在传递map,因为哈希中没有条目,键值test是undef.在括号周围加上括号map以强制解析:
$extra
map
test
undef
$sql->execute((map {$hash->{$_}} @keys),$extra);
您还可以使用哈希切片来避免使用map进行循环:
my @final_array = (@$hash{@keys}, $extra);