编写固定宽度字段文件的好方法是什么?

时间:2012-09-03 22:21:07

标签: perl

我需要编写一个可能被AS / 400上的RPG IV解释的文件(但我不知道)。该文件将通过从MySQL数据库中读取数据然后以指定格式写入来创建。它可能非常大(可能用GB测量但尚未确定)。现在我认为Perl内置format实际上可能是我最好的选择,因为像Xslate和Template Toolkit这样的东西更适用于非固定宽度(HTML)的东西。我唯一担心的是format似乎没有条件,看起来我可能需要它们(如果字段A设置,我发现格式左对齐,如果没有,则右对齐和填充)

2 个答案:

答案 0 :(得分:4)

我想到的其他可能性包括packsprintf系列函数。

我认为pack不支持右对齐文本,所以这不是一个选项。

留下了printf。您可以以编程方式构建格式说明符,以支持条件逻辑以进行调整。

答案 1 :(得分:0)

模板工具包可以在创建固定宽度格式的文件时执行可维护的工作。诀窍是使用模板来描述文件和记录结构,但是每个字段的数据都有Perl函数格式。

跳过模板并在Perl中执行所有格式化可能更容易。无论哪种方式,您都需要考虑如何格式化字段。根据我的经验sprintf更好,处理固定宽度格式文件所需的更多格式化案例。你可能仍然需要实现一些辅助函数手工奇怪(如用你的运气不足的话,用ASCII编码的EBCDIC / COBOL签名数字)。

传统的固定宽度格式文件中有一千多个特殊情况,它几乎足以让我像XML数据文件一样,通常它是最奇怪的特殊情况,最终决定了什么是最好的格式化文件的方法是。