如何在Perl中创建复杂的数据结构?

joe*_*joe 0 xml perl

 %a = ( "KEY" => {  
                    "p1" => 1 , [1223],
                    "p1" => 2 , [2323],
                    "p1" => 3 , [2353],
                 }
       );
Run Code Online (Sandbox Code Playgroud)

我想生成这样的结构.我尝试过这段代码:

@array = ( 1223 , 2323 ,2353 );
$count = 0; 
foreach my $i (@array) {
    $a{"KEY"} => {  "p1" => $count , [$i] };
    $count++;
}   
Run Code Online (Sandbox Code Playgroud)

我怎样才能创建这样的哈希?

Ala*_*avi 6

由于散列只能具有唯一键,因此无法实现上述数据结构.您应该将键的值替换为KEYARRAYREF而不是HASHREF.

以下程序似乎使用ARRAYREF执行您想要的操作.

#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

my @array = ( 1223, 2323, 2353 );
my ( $count, %hash ) = (0);

for (@array) {
    push @{ $hash{KEY}->{SUBKEY} }, { p1 => $count, v2 => $array[$count] };
    $count++;
}

print Dumper \%hash;
Run Code Online (Sandbox Code Playgroud)