배열의 내용이 인쇄 될 때 hashref2의 key3에 원하는 값이 없습니다 (달성해야 할 대상은 hashref1이 key3의 배열을 value1로 가지는 것입니다. hashref2는 value2를 갖는 key3의 배열을가집니다).다중 해시에 사용 된 배열 참조의 요소
코드 흐름에서 먼저 hashrefs를 채우고 데이터를 하위 배열로 푸시해야합니다.
하위 배열에 대한 참조를 사용하면 올바른 방법일까요?
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @array;
my @subarray;
# Puash to array
my $hashref1 = {
key1 => 'value1_1',
key2 => 'value1_2',
key3 => \@subarray
};
push (@array, $hashref1);
# push some data in subarray
push (@subarray, 'value1');
# clear subarray
splice(@subarray);
# Puash to array
my $hashref2 = {
key1 => 'value2_1',
key2 => 'value2_2',
key3 => \@subarray
};
push (@array, $hashref2);
# push some data in subarray
push (@subarray, 'value2');
print "hashref1:\n".Dumper($hashref1);
print "hashref2:\n".Dumper($hashref2);
print "array:\n".Dumper(@array);
아웃 :
hashref1:
$VAR1 = {
'key2' => 'value1_2',
'key1' => 'value1_1',
'key3' => [
'value2'
]
};
hashref2:
$VAR1 = {
'key2' => 'value2_2',
'key1' => 'value2_1',
'key3' => [
'value2'
]
};
array:
$VAR1 = {
'key2' => 'value1_2',
'key1' => 'value1_1',
'key3' => [
'value2'
]
};
$VAR2 = {
'key2' => 'value2_2',
'key1' => 'value2_1',
'key3' => $VAR1->{'key3'}
};
같이 별도 얕은 복사를'덤퍼 (@array)이''되어야 덤퍼 (\ @ 배열)'. 배열이나 해쉬를'Dumper'에 전달하는 것은 의미가 없습니다. – ikegami