【发布时间】:2012-11-18 04:27:43
【问题描述】:
我的问题有点抽象,但我会尽量在我的陈述中说清楚。 (这是一个“橡皮鸭效应”的帖子,所以如果只是把它输入到某个地方,我会很感激的。不过,回复会很棒!)
我有旧的 fortran 代码,我无法更改(至少现在还没有),所以我被它笨拙的输出所困扰。
我正在使用 perl 对注释不佳的 ascii 输出文件进行后处理,正如您可能想象的那样,这些文件是文本和数字的非常特殊的混合体。 “啊,完美的 perl 目标,”你说。是的。但我最近得出的结论是,我想出的是非常糟糕的编码。
我的问题是关于人们更喜欢用来实现这样一个目标的通用结构。正如我所说,我对我选择的那个不满意。
这是我得到的结构的一些伪代码:
flag1 = 0;
flag2 = 0;
while (<INPUT>) {
if (cond1) {
do something [like parse and set a header];
flag1 = 1;
} else {
next;
}
if (flag1 == 1 && cond2) {
do something else [like process a block of data];
} else {
next;
}
}
上述代码的目的是能够将处理分解为与分区不良的 ascii 文件相对应的块——文件中没有太多的“标签”,因此条件 (cond1 、cond2 等)参与其中。设置标志的目的之一是跟踪文件中代码的进度。
现在我想到一个更好的结构可能是
while (<INPUT>) {
do stuff;
}
while (<INPUT>) {
do other stuff;
}
无论如何,如果我的漫无边际激发了任何想法,我会很高兴听到它们。
谢谢
【问题讨论】:
-
您需要提供输入格式的样本以及您的期望
-
感谢乔丹,您的评论。理想情况下,这将是要走的路,我明白这一点。我选择了伪代码方法,因为我不想用一个特别丑陋的应用程序的细节来加重这个问题。我必须经常做这种事情,所以我认为抽象方法可能会产生更普遍适用的东西。多亏了@DVK 接受的回答,我并没有失望。这正是我一直在寻找的东西。
标签: perl code-structure