준호씨의 블로그

perl - Hash안에 array넣기. arrays in hashes 본문

개발이야기

perl - Hash안에 array넣기. arrays in hashes

준호씨 2021. 5. 2. 22:53
반응형

perl에서 array를 사용하는 방법은 다음과 같습니다. () 안에 값들을 넣어주면 됩니다. 출력 편의상 encode_json 함수를 사용했습니다.

my @arr = ("hello", "world", "nice", "to", "meet", "you");
print encode_json(\@arr);
# ["hello","world","nice","to","meet","you"]

만약 앞서 선언된 배열을 hash안에 넣고 싶다면 다음과 같이 할 수 있습니다.

my @arr = ("hello", "world", "nice", "to", "meet", "you");
my %data = (
    id   => "myid",
    data => \@arr
);
print encode_json(\%data);
# {"id":"myid","data":["hello","world","nice","to","meet","you"]}

hash안에서 바로 배열을 작성하려면 어떻게 해야 될까요?

my %data = (
    id   => "myid",
    data => ["hello", "world", "nice", "to", "meet", "you"]
);
print encode_json(\%data);
# {"id":"myid","data":["hello","world","nice","to","meet","you"]}

() 괄호 대신 [] 괄호를 사용하면 됩니다. []는 Anonymous Array(익명 배열)을 선언할 때 사용하는 괄호입니다.

다른 언어들은 보통 배열을 사용할 때 [] 괄호를 사용하는데요. perl에서는 특이하게 () 괄호를 사용합니다. 그리고 [] 괄호는 익명 배열을 사용할 때 사용하고요. hash안에서 배열을 선언할 때처럼 별도의 이름을 정의하지 않고 바로 배열을 사용할 때는 [] 괄호를 사용합니다.

 

참고. anonymouse references

참고로 익명 배열을 변수로 분리하면 다음과 같습니다.

my $anon_array = [ "hello", "world", "nice", "to", "meet", "you" ];
my %data = (
    id   => "myid",
    data => $anon_array
);
print encode_json(\%data);
# {"id":"myid","data":["hello","world","nice","to","meet","you"]}

그리고 %data로 익명 hash로 바꾸면 다음과 같습니다. 익명 hash는 () 괄호 대신 {} 괄호를 사용합니다.

my $anon_array = [ "hello", "world", "nice", "to", "meet", "you" ];
my $data = {
    id   => "myid",
    data => $anon_array
};
print encode_json($data);
# {"id":"myid","data":["hello","world","nice","to","meet","you"]}

 

반응형
Comments