我希望cflags
中的所有项目都自动放在cppflags
中。我如何能?遵循失败代码:
my %conf = (
'cflags' => ['-g', '-O0'],
'cppflags' => [ @{$conf{cflags}} ],
'bindir' => $PWD . "/bin",
);
抱歉这个愚蠢的问题,我是perl的新手:P。
答案 0 :(得分:3)
您仍在构建要分配给%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} } ];
(按个人喜好的降序排列。)
答案 1 :(得分:1)
为了跟进ikegami的回答,这里有另一个建议,用例略有不同:
my @cflags = qw( -g -O0 );
my %conf = (
cflags => \@cflags,
cppflags => \@cflags,
bindir => "$PWD/bin",
);
这与他的#1不同,因为@cflags
数组以及键cflags
和cppflags
的值都与同一个数组相关。更改其中任何一个,其他人将反映更改。也许这就是你想要的行为,或者也许它不是,或者它对你没有任何影响,但它确实存在。