사이의 관계가있다 배열 및 해시가 표시됩니다.
my %hash = (one => 1, two => 2, three => 3);
one
, two
및`three 인 hree 멤버 해시. 이렇게 :
my %hash = ("one", 1, "two", 2, "three", 3);
실제로 두 줄은 완전히 똑같은 문장입니다. =>
은 하나의 값과 다른 값 사이의 관계를 강조하는 데 사용되는 구문 설탕의 형식입니다. 다시 같은 줄이 있습니다. 난 그냥이 일에 당신의 두뇌와 장난 해요,하지만 이전과 동일한 해시를 생성합니다 여기
my %hash = ("one", 1 => "two", 2 => "three", 3);
가 동일한 해시 할당하는 또 다른 방법 :
my @array = ("one", 1, "two", 2, "three", 3);
my %hash = @array;
을 그리고이 너무도 유효 :
my @array = %hash;
펄에서 해시와 배열 사이에 밀접한 관계가있다. 해시 컨텍스트에서 배열을 가져 오면 해시가됩니다. 배열 컨텍스트에서 해시를 가져 오면 배열이됩니다. 예를 들어 :
mysub (%hash);
sub mysub {
my %subhash = @_;
...
}
이 서브 루틴에 해시를 전달하는 유효한 (권장되지는 않았지만 방식)입니다. 해시는 @_
배열로 변환 된 다음 서브 루틴의 해시로 다시 변환됩니다.
의이 루프를 살펴 보자 : 당신의 %read_data
해시를 취할 것입니다, 따라서
for my $k1 (%read_data) {
(...)
는 목록/배열 상황입니다 및 및 다음 각 키와리스트 문맥에서 그것을 제시 그것의 값.
해결 방법은 몇 가지가 있습니다. 하나는 keys을 사용하여 해시의 모든 키를 제거하고 키 배열을 반환하는 것입니다. 이것은 일반적으로 sort과 결합되어 키를 약간의 유사하게 정렬합니다.
for my $k1 (sort keys %read_data) {
또 다른
는 하나의 키와 하나 개의 값 두 멤버 일련의 배열을 반환
each을 사용하는 것입니다.
입력을 표시했지만 출력을 생성하는 데 사용하는 코드는 표시하지 않았습니다. – Quentin
키 키워드와 디버그 출력을 생성 한 것을 잊어 버렸습니다. OP에서 모두 돌봐. – octopusgrabbus
'사용 데이터 :: 덤퍼; – toolic