我想将所有项目cflags
自动放入cppflags
. 我如何?以下失败代码:
my %conf = (
'cflags' => ['-g', '-O0'],
'cppflags' => [ @{$conf{cflags}} ],
'bindir' => $PWD . "/bin",
);
抱歉这个愚蠢的问题,我是 perl 的新手:P。
您仍在构建要分配给的列表%conf
,因此尚未分配任何内容%conf
,因此尝试从中读取$conf{cflags}
将是徒劳的。
选项1:
my @cflags = qw( -g -O0 );
my %conf = (
cflags => [ @cflags ],
cppflags => [ @cflags ],
bindir => "$PWD/bin",
);
选项 2:
my %conf;
$conf{cflags } = [qw( -g -O0 )];
$conf{cppflags} = [ @{ $conf{cflags} } ];
$conf{bindir } = "$PWD/bin";
选项 3:
my %conf = (
cflags => [qw( -g -O0 )],
bindir => "$PWD/bin",
);
$conf{cppflags} = [ @{ $conf{cflags} } ];
(按个人喜好递减顺序。)
为了跟进 ikegami 的回答,这里有另一个建议,它的用例略有不同:
my @cflags = qw( -g -O0 );
my %conf = (
cflags => \@cflags,
cppflags => \@cflags,
bindir => "$PWD/bin",
);
这与他的 #1 不同,因为@cflags
数组和键的值cflags
都cppflags
与同一个数组相关。更改其中任何一个,其他将反映更改。也许这就是你想要的行为,或者它不是,或者它对你没有任何影响,但它确实存在。