전종필 배열의 해쉬나 해쉬의 배열은 배열의 배열이나, 해쉬의 해쉬의 경우와 마찬가지로 리퍼런스(참조)를 이용합니다.
원리가 같으므로, 내용은 위 두가지 팁을
참조하시고, 여기에는 예문만 제시합니다.
@trees = qw( 소나무 참나무 상수리나무 오리나무 );
@fruit = qw( 사과 배 감 포도 );
@vegit = qw( 상추 시금치 토마토 );
%all = (
tree => \@trees,
fruit => \@fruit,
vegit => \@vegit
);
print $all{tree}->[1], "\n"; # 참나무
print "@{$all{fruit}}\n"; # 사과 배 감 포도
이름없는 배열(anonymous array)을 사용하면
%all = (
tree => [ qw( 소나무 참나무 상수리나무 오리나무 ) ],
fruit => [ qw( 사과 배 감 포도 ) ],
vegit => [ qw( 상추 시금치 토마토 ) ]
);
입니다.
해쉬의 배열은 이름없는 해쉬(anonymous hash)를 이용하여 다음과 같이
만들 수 있습니다.
@classschedule = (
{ name=>'국어', teacher=>'김국어', place=>'교실' },
{ name=>'영어', teacher=>'Jason', place=>'교실' },
{ name=>'영어', teacher=>'Jason', place=>'시청각실' },
{ name=>'국어', teacher=>'김국어', place=>'교실' },
{ name=>'윤리', teacher=>'박도덕', place=>'생활관' },
{ name=>'컴터', teacher=>'펄아비', place=>'전산실' }
);
$i = 1;
foreach my $hashref ( @classschedule ) {
print $i++, "교시 - $hashref->{name} 교사: $hashref->{teacher} ($hashref->{place})\n";
}
print "제일 재미있는 수업: $classschedule[$#classschedule]->{name}\n"; # 끝나는 시간이니까
print "점심식사 후 수업장소: $classschedule[4]->{place}\n";
foreach를 @classschedule에 대해 적용하였을 때, $hashref는 해쉬의
리퍼런스라는 점을 새겨두시기 바랍니다.
따라서 $hashref->{name}과 같이 ->{}를 사용합니다. |
|