펄 해시
해시는 키/값 쌍의 모음입니다.
Perl의 해시 변수는 백분율 기호(%)로 시작합니다.
액세스 해시 요소 형식: ${key}.
다음은 간단한 해시 예입니다.
#!/usr/bin/perl %data = ('google', 'google.com', 'php', 'php.cn', 'taobao', 'taobao.com'); print "$data{'google'} = $data{'google'}\n"; print "$data{'php'} = $data{'php'}\n"; print "$data{'taobao'} = $data{'taobao'}\n";
위 프로그램을 실행하면 출력 결과는 다음과 같습니다.
Create Ha Hash
는 다음 두 가지 방법으로 생성할 수 있습니다.
1. 각 키에
$data{'google'} = 'google.com'; $data{'php'} = 'php.cn'; $data{'taobao'} = 'taobao.com';
값을 설정합니다. 2. 목록을 통해
목록을 설정합니다. 첫 번째 요소는 키이고 두 번째 요소는 값입니다.
%data = ('google', 'google.com', 'php', 'php.cn', 'taobao', 'taobao.com');
=> 기호를 사용하여 키/값을 설정할 수도 있습니다.
%data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com');
다음 예는 위 예의 변형입니다. 를 사용하세요. - 따옴표 대신:
%data = (-google=>'google.com', -php=>'php.cn', -taobao=>'taobao.com');
이 방법을 사용하면 키에 공백을 사용할 수 없습니다. 요소를 읽는 방법은 다음과 같습니다:
$val = %data{-google} $val = %data{-php}
해시 요소에 액세스
액세스 해시 요소 형식: ${key}, 예시는 다음과 같습니다:
#!/usr/bin/perl %data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com'); print "$data{'google'} = $data{'google'}\n"; print "$data{'php'} = $data{'php'}\n"; print "$data{'taobao'} = $data{'taobao'}\n";
위 프로그램을 실행하면, 출력 결과는 다음과 같습니다:
해시 값 읽기
배열처럼 해시에서 값을 추출할 수 있습니다.
해시 값은 배열 구문 형식(@{key1,key2})으로 추출됩니다.
#!/uer/bin/perl %data = (-taobao => 45, -google => 30, -php => 40); @array = @data{-taobao, -php}; print "Array : @array\n";
위 프로그램을 실행하면 출력 결과는 다음과 같습니다.
Array : 45 40
해시 키와 값 읽기
모든 키 읽기
We You keys 함수를 사용하여 해시의 모든 키를 읽을 수 있습니다. 구문 형식은 다음과 같습니다.
keys %HASH
이 함수는 모든 해시의 모든 키 배열을 반환합니다.
#!/usr/bin/perl %data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com'); @names = keys %data; print "$names[0]\n"; print "$names[1]\n"; print "$names[2]\n";
는 위 프로그램을 실행하고 출력 결과는 다음과 같습니다.
taobao google php
마찬가지로 values 함수를 사용하여 해시의 모든 값을 읽을 수 있습니다. 구문 형식은 다음과 같습니다.
values %HASH
이 함수는 모든 해시의 모든 값 배열을 반환합니다.
#!/usr/bin/perl %data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com'); @urls = values %data; print "$urls[0]\n"; print "$urls[1]\n"; print "$urls[2]\n";
위 프로그램을 실행하면 출력 결과는 다음과 같습니다.
taobao.com php.cn google.com
요소가 존재하는지 검색
존재하지 않는 키/값 쌍을 읽는 경우 해시는 정의되지 않은 값을 반환하고 실행 시 경고가 표시됩니다.
이런 상황을 피하기 위해 exists 함수를 사용하여 키가 존재하는지 확인할 수 있습니다.
#!/usr/bin/perl %data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com'); if( exists($data{'facebook'} ) ){ print "facebook 的网址为 $data{'facebook'} \n"; } else { print "facebook 键不存在\n"; }
위 프로그램을 실행하세요. 출력 결과는 다음과 같습니다.
facebook 键不存
위 코드에서는 IF...ELSE 문을 사용했는데, 이에 대해서는 다음 장에서 자세히 소개하겠습니다.
해시 크기 가져오기
해시 크기는 요소의 수입니다. 먼저 키 또는 값의 모든 요소 배열을 가져온 다음 숫자를 계산하여 해시를 얻을 수 있습니다. 배열 요소의 크기는 간단한 할당을 통해 수행됩니다. 하지만 해시 요소를 삭제하려면
delete기능을 사용해야 합니다.
#!/usr/bin/perl %data = ('google'=>'google.com', 'php'=>'php.cn', 'taobao'=>'taobao.com'); @keys = keys %data; $size = @keys; print "1 - 哈希大小: $size\n"; @values = values %data; $size = @values; print "2 - 哈希大小: $size\n";
위 프로그램을 실행하면 출력 결과는 다음과 같습니다.