以perl格式化$ number / t $ q / t $ a格式的文本文件

时间:2013-06-20 18:59:17

标签: perl

我正在尝试格式化文本文件,以便索引问题的数量。我到目前为止的代码是:

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

3 个答案:

答案 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;