Arrays 哈希数组元素复制

Arrays 哈希数组元素复制,arrays,perl,copy,elements,Arrays,Perl,Copy,Elements,我的哈希数组: @cur = [ { 'A' => '9872', 'B' => '1111' }, { 'A' => '9871', 'B' => '1111' } ]; 预期结果: @curnew = ('9872', '9871'); 从 这是一个数组,并将其分配给一个数组

我的哈希数组:

@cur = [
          {
            'A' => '9872',
            'B' => '1111'
          },
          {
            'A' => '9871',
            'B' => '1111'
          }
        ];
预期结果:

@curnew = ('9872', '9871');


这是一个数组,并将其分配给一个数组

请注意散列是无序的,所以我认为单词优先是指字典优先

use Data::Dumper;
my @hashes = map (@{$_}, map ($_, $cur[0]));
my @result = map ($_->{'A'} , @hashes);    
print Dumper \@result;
表达式返回
qw(9872 9871)

@cur=[…]
中将arrayref分配给数组可能是一个错误,但我从表面上看是错误的


奖金解决方案:

use perl5i::2;
$cur[0]->map(sub {
    $_->{ $_->keys->sort->at(0) } 
})->flatten;

表达式返回与上面相同的值。这段代码稍长一些,但我更易于阅读,因为执行流程严格地从上到下、从左到右进行。

首先必须将数组定义为

my @cur = (
    {
        'A' => '9872',
        'B' => '1111'
    },
    {
        'A' => '9871',
        'B' => '1111'
    }
);
注意括号

#!/usr/bin/perl 
use strict;
use warnings;
use Data::Dump qw(dump);

my @cur = (
    {
        'A' => '9872',
        'B' => '1111'
    },
    {
        'A' => '9871',
        'B' => '1111'
    }
);
my @new;
foreach(@cur){
    push @new, $_->{A};
}
dump @new;
#!/usr/bin/perl 
use strict;
use warnings;
use Data::Dump qw(dump);

my @cur = (
    {
        'A' => '9872',
        'B' => '1111'
    },
    {
        'A' => '9871',
        'B' => '1111'
    }
);
my @new;
foreach(@cur){
    push @new, $_->{A};
}
dump @new;