Gilles는 이미 현재 데이터 구조를 사용하는 방법을 설명 했지만 다른 데이터 구조를 모두 사용하는 것이 좋습니다. 단순 해시입니다.
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
my %answers = (
"Why do you study here?" => "bla",
"What are your hobbies?" => "blabla"
);
while (my ($question, $answer) = each %answers) {
say "Question: $question";
say "Answer: $answer";
}
산출:
Question: Why do you study here?
Answer: bla
Question: What are your hobbies?
Answer: blabla
각각 하나의 키 / 값 쌍만 포함하는 해시 배열보다 작업하기가 더 쉽습니다.
특정 (정렬되지 않은) 순서로 해시를 반복하려는 경우 몇 가지 옵션이 있습니다. 단순한 솔루션은 액세스하려는 순서대로 키 배열을 유지하는 것입니다.
# In the order you want to access them
my @questions = ("What are your hobbies?", "Why do you study here?");
my %answers;
@answers{@questions} = ("blabla", "bla");
foreach my $question (@questions) {
say "Question: $question";
say "Answer: $answers{$question}";
}
산출:
Question: What are your hobbies?
Answer: blabla
Question: Why do you study here?
Answer: bla
또 다른 옵션은 Tie :: IxHash (또는 더 빠른 XS 모듈 Tie :: Hash :: Indexed )를 사용하여 삽입 순서로 키에 액세스하는 것입니다.
use Tie::IxHash;
tie my %answers, "Tie::IxHash";
%answers = (
"Why do you study here?" => "bla",
"What are your hobbies?" => "blabla"
);
while (my ($question, $answer) = each %answers) {
say "Question: $question";
say "Answer: $answer";
}
산출:
Question: Why do you study here?
Answer: bla
Question: What are your hobbies?
Answer: blabla
-------------------$_{$key}
$key
해시 변수를 찾습니다 %_
. $
시작 부분 의시길 은 결과 유형이 스칼라임을 나타냅니다. 해시 여야 VAR{KEY}
한다는 것을 결정하는 것은 구문 구조 입니다 VAR
. 비록 $_
및 %_
이름과 같은 기호를 사용, 다른 sigils 그들 관계가없는 변수를 확인하십시오.
해시 참조 $_
를 기본 해시로 역 참조해야합니다 . 이에 대한 구문은 $_->{$key}
또는 ${$_}{$key}
입니다.
주제에 대한보다 일반적인 프리젠 테이션은 참조 튜토리얼 을 참조 하십시오 .
-------------------의 요소가 @questions
있는 해시에 대한 참조 , 해시 없습니다. 따라서 다음과 같이 사용해야합니다.
foreach (@questions) {
my $key = (keys %$_)[0];
print "\\section{$key}\n\n$_->{$key}\n\n";
}
참조 를 만들고 사용하는 방법 은 perlref 를 참조하십시오 .
출처
https://stackoverflow.com/questions/22050365