我需要有关Perl数组哈希的帮助

时间:2019-07-02 06:10:17

标签: perl

我有一个数组的哈希值和两个变量-1 list和1标量值

我该怎么做?

我想要两件事。首先是每个键的列表。 其次,我需要$ b来获取每个键的最后一个数组元素的值

  %abc=(
        0=>[1,2,3],
        1=>[1,5]
        );
    @a;
    $b;

对于键0,我需要@a具有[1,2],对于键1,我需要@a具有[1]。 对于0键,我需要$ b的值为3,对于键1我需要$ b的值为5

2 个答案:

答案 0 :(得分:3)

我了解您希望@a保留除最后一个值之外的所有值,并且希望$b仅保留最后一个值。怎么样:

use feature 'say';
my %abc = (0 => [1,2,3], 1 => [1,5]);

for my $key (keys %abc) {
    my @a = @{$abc{$key}};
    my $b = pop @a;
    say "@a / $b"
}

答案 1 :(得分:2)

我几乎肯定会使用类似the other solution here的名称。但是这里有一个不同的解决方案:a)使用values()而不是keys(),b)使用reverse()简化(?!)分配。不要这样做:-)

#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

my %abc = (0 => [1,2,3], 1 => [1,5]);

for (values %abc) {
  my ($b, @a) = reverse @$_;
  @a = reverse @a;

  say "@a / $b";
}