にすべてのアイテムを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} } ];
(個人的な好みの降順です。)
池上の答えをフォローアップするために、ユースケースが少し異なるもう1つの提案を次に示します。
my @cflags = qw( -g -O0 );
my %conf = (
cflags => \@cflags,
cppflags => \@cflags,
bindir => "$PWD/bin",
);
これは、@cflags
配列とキーの値cflags
がcppflags
すべて同じ配列に関連しているため、彼の #1 とは異なります。それらのいずれかを変更すると、他のものに変更が反映されます。おそらく、これはあなたが望んでいる振る舞いであるかもしれませんし、そうでないかもしれませんし、あるいはあなたにとって何の違いもないかもしれません。