如何使用相同的数据创建多个哈希引用?

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
          },