Link
11-28 23:35
«   2020/11   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
Archives
Today
1,731
Total
1,176,303
관리 메뉴

꿈 많은 사람의 이야기

펄 해시(perl hash), 삽입, 삭제(delete), keys함수, values 함수 본문

perl

펄 해시(perl hash), 삽입, 삭제(delete), keys함수, values 함수

이수진의 블로그 이수진의 블로그 2017. 9. 25. 09:51

펄에는 해시라는 요소가 있습니다.

 

해시는 key 와 value 쌍으로 이루어진 값이죠.

쉽게 설명하면 일종의 인덱스입니다.

김씨는 ㄱ 칸에서, 이씨는 ㅇ 칸에서 찾는

뭐 그런거죠

 

 

해시는 %로 시작합니다.

 

이런 그림으로 진행할거에요!

 

 

fred라는 큰 틀안에 키, 값을 넣을겁니다.

 

그럼 fred를 만들어볼까요?

 

%fred = ( );

 

끝입니다. 해시를 만들었어요

 

이제 값을 넣으면 되죠

1
2
3
4
5
6
7
 
 
$fred{"aaa"= "bbb";#배열과는 접근하는 방법이 다르다. 배열은 []로 접근하고, 넣을땐 ()로 넣었.
#해시에 값을 넣는 방법.
$fred{234.5= 456.7#키 "234.5", 값 456.7
 
print($fred{234.5}."\n");  #출력하는 방법. $로 접근해서 출력한다.
cs

 

 

이런식으로 만들고, 접근하는겁니다. 이게 해시에요

 

aaa라는 키를 가지고 있으며, 그거에 대한 값은 bbb입니다.

그리고 234.5에 대한 키를 가지고 있으며, 그거에 값은 456.7 이죠

 

그래서 234.5의 키를 출력하면 456.7이 나오게 됩니다.

 

 

그리고 해시값을 배열에 넣을 수도 있어요

1
2
3
4
5
6
7
8
9
 
@fred_list = %fred;  #key, value가 그냥 배열요소로서 들어가게 된다.
 
print "배열 출력 \n";
for($i = 0 ; $i < $#fred_list+1 ; $i++){
    print($fred_list[$i]."\n");
}
# 이렇게 상응되게 들어가니까 나중에 배열 요소를 해시화 할 수도 있다.
 
cs

 

 

이렇게요!

 

값의 출력은

 

 

 

처럼 나오게 되죠

 

그리고 해시에는 여러 함수가 있습니다.

 

reverse, values, keys 함수인데요

 

reverse는 키와 value를 바꿔버립니다.

 

1
2
%fred4 = reverse %fred;  #reverse를 하면 key와 value가 바뀐다.!!!
print($fred4{456.7});
cs

이렇게 하면 key와 value가 바뀌어요

 

 

 

그리고 keys함수는 키 리스트를 반환합니다.

value값을 가져오지 않구 key값만 가지고 옵니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
#keys(%hashname) 함수는 해시 안의 키 리스트를 반환한다. 만약 요소가 없다면 keys는 공백 리스트를 리턴한다.
 
@list = keys(%fred);
 
 
foreach $key (@list){
    print("fred $key is $fred{$key} \n");
}
 
 
foreach $key (keys(%fred4)){
    print("fred4 $key is $fred4{$key} \n");
}
 
cs

 

 

 

저렇게 하면 key값인

aaa, 234.5 등의 값만 나오게 되요

 

그리고 value값만 또 가지고 오고 싶죠?

 

1
2
3
4
5
6
7
 
#values(%arrayname)  함수는 keys(%arrayname)에 의해 리턴된 키와 동일한 순서로 %arrayname의 모든 현재 값의 리스트를 리턴한다.
 
@values = values(%fred3);    #value값이 저장됨
foreach $val (@values){
    print("val : $val \n");
}
cs

 

이렇게 하면 value값만 나오게 됩니다!

 

 

그리고 해시 값을 삭제하고 싶으면??

 

 

1
2
3
4
5
6
7
8
 
#delete함수는 해시의 키값을 이용해 value를 삭제한다.
 
%fred5 = ("aaa""bbb""123""456");
delete $fred5{"aaa"};  #aaa,bbb가 제거된다.
print(%fred5);
 
 
cs

처럼 하면 됩니다!

 

 

그리고 해시를 처음부터 초기화 하고 싶으면

 

 

1
2
3
4
5
6
7
8
%fred2 = (
1=>"aa",
2=>"bb",
3=>"cc",
);
 
print "fred2 : $fred2{1} \n";
print "fred2 : $fred2{2} \n";
cs

으로 하면됩니다.

 

여기까지 펄의 해시였습니다.

 

 

 

 

 

0 Comments
댓글쓰기 폼