2012-09-21 5 views
1

다음 데이터 구조체를 호출하는 것이 확실하지 않습니다 : 해시 또는 배열.Perl의 데이터 구조체에 추가하는 방법

세 번째 요소를 추가하려고합니다. 누군가 나를 인도 해 주실 수 있습니까? 필자가 perl과이 포럼에도 익숙하지 않아서 약간의 설명이 많이 감사 할 것입니다.

기존 구조 :

my $var= [ 
      bless({ 
        'name' => 'Name1', 
        'groupid' => '2', 
        'description' => 'Desc2' 
       }, 'my_type'), 
      bless({ 
        'name' => 'Name2', 
        'groupid' => '4', 
        'description' => 'Desc3' 
       }, 'my_type'), 
]; 

내가 원하는 그것으로 다음을 추가합니다 :

bless({ 
     'name' => 'Name3', 
     'groupid' => '9', 
     'description' => 'Desc4' 
    }, 'my_type'), 

이 시간 내 주셔서 감사하고 도움이!

답변

4

$var은 "배열 참조"입니다. 어레이

우리 끝에 push 요소 수

my @a = (1, 2, 3); 
push @a, 4; 
print "@a"; # "1 2 3 4" 

배열로서 arrayref를 사용하기 위해, 우리는를 가지고 역 참조 다음 역 참조 간단한 경우

my $a = \@a; 
push @{ $a }, 5; 
print "@{$a}"; # "1 2 3 4 5" 

수 줄여서 쓸 수 있었으므로

push @$a, 5; # sic! two sigils 

귀하의 경우에이 우와 해시 또는 배열 : 나는 다음과 같은 데이터 구조를 호출 무엇인지 확실하지 않다

push @$var, bless(...); 
+0

빠른 도움에 감사드립니다. hashref 및 arrayref가 다음에 배울 점인 것 같습니다. – Drek

0

배열 참조 자입니다. 요소를 arrayref에 푸시하고자합니다.

push(@{ $var }, $obj); 

여기서 object는 추가하려는 축복 된 개체입니다.

배열 참조이므로 'push'는 배열에 대한 참조가 아니므로 뭔가를 밀어 넣기 위해 참조를 역 참조해야합니다.

+3

, push', 예를 들어'에 인수로 심판을 사용하는 것이 괜찮습니다 'push $ var, $ obj' – mob

+0

도와 줘서 고마워. – Drek

0

수 ULD.

$ var는 개체의 배열을 나타냅니다.

추가는 간단하다

v5.14 이후
my $obj = bless({ #Create object 
    'name' => 'Name3', 
    'groupid' => '9', 
    'description' => 'Desc4' 
}, 'my_type'), 
push(@$var, $obj); #Add 
관련 문제