3

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

4

2 回答 2

4

想到的其他可能性是packsprintf系列函数。

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

留下(s)printf。您可以以编程方式构建格式说明符,以支持您的条件逻辑进行证明。

于 2012-09-03T23:53:09.457 回答
0

Template Toolkit 可以在创建固定宽度格式的文件方面发挥作用。诀窍是使用模板来描述文件和记录结构,但使用 Perl 函数格式化每个字段的数据。

跳过模板并在 Perl 中进行所有格式化可能更容易。无论哪种方式,您都需要考虑如何格式化您的字段。以我的经验sprintf更好,并且可以处理更多固定宽度格式文件所需的格式情况。你可能仍然需要实现一些手怪的辅助函数(如果你不够幸运的话,比如用 ASCII 编码的 EBCDIC/COBOL 符号数字)。

在传统的固定宽度格式文件中有上千种特殊情况,这几乎足以让我喜欢 XML 数据文件,通常它最终决定了格式化文件的最佳方法是最奇怪的特殊情况。

于 2012-09-04T14:47:43.097 回答