2012-06-12 2 views
1

이 perl 모듈이 어떻게 작동하는지 이해하려고 노력 중이며, XML :: Smart라고합니다. 대부분은 모듈과 관련이없는 한 가지를 제외하고는 알아 내기 쉽습니다.중괄호로 둘러싸인 Perl 해시는 어떻게됩니까?

내가하고 싶은 일은 스크립트의 해시를 XML :: Smart 모듈로 복사하여 처리하는 것입니다. 그것을 "금지"하는 약간 후에 나는 그것을 내가 원하는대로 해줄 수 있었다. 문제는 정확히 내가 한 일이 아니라는 것입니다. 누군가가 이것이 영어로 무엇을 의미하는지에 대한 단서를 줄 수 있다면 그것은 위대 할 것입니다.

클래스를 만드는 것과 관련이 있다는 의미에서 모듈을 굴러 다니면서 엉망이되어 보였을 때 이와 비슷한 것을 보았습니다. 그 클래스가 호출 된 것인지 아니면 비슷한 것이 있는지는 확실하지 않았습니다.

내 코드는 다음과 같습니다.

#!/usr/bin/perl 
use strict; 
use warnings; 
use XML::Smart; 

my $xml_obj = XML::Smart->new(); 

my %config_file = (
    "server01" => { 
     "connection" => { 
      "address" => "10.0.0.4", 
      "port" => "22", 
     }, "authentication" => { 
      "username" => "admin", 
      "password" => "password", 
     }, 
    }, 
); 

$xml_obj->{config} = {%config_file}; 

답변

3

이전 해시의 (얕은) 복사본으로 새 해시에 대한 참조를 만듭니다.

{}은 해시 참조입니다.

{ "foo", "bar", "x", "y" }은 키와 값 목록이있는 hashref를 정의합니다.

{} 안에 해시를 넣으면 목록 컨텍스트에 있으므로 해시 키와 값의 목록으로 바뀝니다.

+0

"\ % config"와 (과) 동일합니까? – ianc1215

+0

@Solignis - 아니, 원래 해시에 대한 참조 일 뿐이며 사본이 아닙니다. – Quentin

+0

내가하려고하는 일은 너무 많은 복사본 (단어의 나쁜 선택)이 아니라 "원래 해시를 $ xml_obj -> {config}에 반영하고 싶습니다. 의미가 있습니까? – ianc1215

-1

% config_file을 $ xml_obj -> {config} 에 할당하려는 경우 해시 슬라이스와 같은 작업을 수행 할 수 있습니다.

@ {$ xml_obj -> {config}} {keys % config_file} = 값 % config_file;

관련 문제