这不完全是您的问题,但是...如果您实际上是以这种方式构建数据结构,您可能会考虑使用更简洁的“文字”语法:
#!/usr/bin/perl
use strict;
use warnings;
my %VAR = (
SCALAR => 'test scalar',
ARRAY => [
'test array',
],
HASH => {
NAME => [
'test hash array 1',
'test hash array 2',
{
SOMEHASH => 'test hash array hash 1',
ANOTHERHASH => 'test hash array hash 2',
},
],
},
);
主要的两个原因是可读性和自动生存错误。这不是错误的 perl,但它可能导致难以调试的问题,例如意外键入:
$VAR{HASH}{NAME}[1] = "test hash array 1";
$VAR{HASH}{NAME}[2] = "test hash array 2";
$VAR{HASH}{NAME}[2] = "test hash array 3";
$VAR{HASH}{NAME}[4] = "test hash array 4";
代替
$VAR{HASH}{NAME}[1] = "test hash array 1";
$VAR{HASH}{NAME}[2] = "test hash array 2";
$VAR{HASH}{NAME}[3] = "test hash array 3";
$VAR{HASH}{NAME}[4] = "test hash array 4";
如果您正在使用,这不是问题
$VAR{HASH}{NAME} = [
undef,
'test hash array 1',
'test hash array 2',
'test hash array 3',
'test hash array 4',
];