Gilles already explained 如何使用您当前的数据结构,但我建议您完全使用不同的数据结构:简单哈希。
#!/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