Tips in Action‎ > ‎배열과 Hash‎ > ‎

해쉬에서 특정한 요소 하나만 지우기

전종필

해쉬에서 특정한 요소 하나만 지울 경우에는 어떻게 할까요 ?

$hash{$key} = undef;
# 또는
undef $hash{$key};
라고 하고 싶으신 분이나, 잘 모르시겠다는 분은 다음 예제를 직접 실행해 보시기 바랍니다.

%hash = qw/ a 1 b 2 c 3 d 4 e 5 f 6 /;
phash(%hash);
undef $hash{b}; # 값만 undef 값으로 바꿔줍니다.
phash(%hash);
delete $hash{b}; # 한 요소 지우기
phash(%hash);
delete @hash{qw/d e/}; # 여러 요소 지우기. $나 %가 아니라 @입니다.
phash(%hash);

sub phash {
        my %h = @_;
        print join('-', map {($_,$h{$_})} sort keys %h), "\n";
}
delete함수는 (종종 오해를 사듯) 파일을 지우는 것이 아니라, 해쉬의 한 요소, 또는 요소들, 배열의 한 요소, 또는 요소들을 지우는 함수입니다. 
Comments