我正在尝试格式化文本文件,以便索引问题的数量。我到目前为止的代码是:
my %questions = map { split(/\t/, $_, 2) } @qa_list;
这正确地将数据格式化为问题/答案列表,由选项卡分隔。但是,我无法弄清楚如何修改它以便对问题进行编号。我正在考虑在那里嵌套另一个split()或map,但是我最终会遇到无效且难以阅读的复杂表达式。
编辑:回应第一条评论
目前的输出是:
Question1\tAnswer1
Question2\tAnswer2
Question3\tAnswer3
但我希望它是:
1 Question1\tAnswer1
2 Question2\tAnswer2
3 Question3\tAnswer3
答案 0 :(得分:2)
您想要一个包含
的数组Question 1<tab>Answer 1
Question 2<tab>Answer 2
...
并打印
1<tab>Question 1<tab>Answer 1
2<tab>Question 2<tab>Answer 2
...
所以这只是一个将数组索引加一个和一个标签添加到前面的问题。
print "$_\t$qa_list[$_-1]\n" for 1..@qa_list;
答案 1 :(得分:2)
最简单的方法:
my $count = 1; # start index at 1
for (@qa_list) {
print $count++, # increase counter
"\t$_\n"; # join with tab end with newline
}
答案 2 :(得分:2)
ikegami的答案有一个可以使用printf
printf "%s\t%s\n", $_+1, $qa_list[$_] for 0..$#qa_list;
或
print ($_+1)."\t$qa_list[$_]\n" for 0..$#qa_list;