这涉及到Perl的scalar和Array语境问题。
有问题的代码:
$new_hash{$some_key1} = @some_array1; foreach($newhash{$some_key1}) { print $_ }
打印的结果是只输出了一个元素,其值为数组的长度。
这里的问题是,赋值给Hash的Value是数组的长度,需要强制使用数组语境@{$hash{$key}}:
@{$new_hash{$some_key1}} = @some_array1; $value = $newhash{$some_key1}; foreach(@{$value}){ }