如何使用相同的数据创建多个哈希引用?
How to create many hash references with identical data?
我正在尝试创建许多具有相同内容的散列引用。使用 x
运算符提供相同引用的副本。我怎样才能得到不同的参考资料?
我需要不同的参考资料,以便我以后可以独立于其他人更新它们。
我的代码:
use strict;
use warnings;
use autodie;
use feature qw(say);
use open ':std', ':encoding(UTF-8)';
my %UNIT_COUNT = (
numsys => 6,
alg => 20,
geo => 15,
cogeo => 6,
trig => 12,
mensur => 10,
statprob => 11
);
my $out = [
map {
( { unit => $_, weight => 1 } ) x
( $UNIT_COUNT{$_} )
} keys %UNIT_COUNT
];
use Data::Dumper;
print Dumper($out);
这使用了另一个 map
而不是 x
运算符,但它确实为您提供了副本:
my $out = [
map {
my $k = $_;
map { { unit => $k, weight => 1 } } 1 .. $UNIT_COUNT{$_}
} keys %UNIT_COUNT
];
部分输出:
$VAR1 = [
{
'unit' => 'mensur',
'weight' => 1
},
{
'weight' => 1,
'unit' => 'mensur'
},
{
'unit' => 'mensur',
'weight' => 1
},
{
'unit' => 'mensur',
'weight' => 1
},
我正在尝试创建许多具有相同内容的散列引用。使用 x
运算符提供相同引用的副本。我怎样才能得到不同的参考资料?
我需要不同的参考资料,以便我以后可以独立于其他人更新它们。
我的代码:
use strict;
use warnings;
use autodie;
use feature qw(say);
use open ':std', ':encoding(UTF-8)';
my %UNIT_COUNT = (
numsys => 6,
alg => 20,
geo => 15,
cogeo => 6,
trig => 12,
mensur => 10,
statprob => 11
);
my $out = [
map {
( { unit => $_, weight => 1 } ) x
( $UNIT_COUNT{$_} )
} keys %UNIT_COUNT
];
use Data::Dumper;
print Dumper($out);
这使用了另一个 map
而不是 x
运算符,但它确实为您提供了副本:
my $out = [
map {
my $k = $_;
map { { unit => $k, weight => 1 } } 1 .. $UNIT_COUNT{$_}
} keys %UNIT_COUNT
];
部分输出:
$VAR1 = [
{
'unit' => 'mensur',
'weight' => 1
},
{
'weight' => 1,
'unit' => 'mensur'
},
{
'unit' => 'mensur',
'weight' => 1
},
{
'unit' => 'mensur',
'weight' => 1
},