0

我在这个程序中有一系列单行。它们将在 cmd 或 indiv 中单独工作。写在程序中,但是,当它们都在一起时,我相信它只是第一个起作用的。考虑到我有很多数据要处理并且更愿意能够批量执行这个和其他类似的数据,这非常麻烦。我对 perl 和计算机编程很陌生,所以我为初学者的错误道歉。任何帮助都会很棒。

谢谢,乔什

use strict;
use warnings;




LINE: while (<>) {
s/POSF /\n/gi;
s/,|\*|\\|\^|\"|=|\?|\$//gi;
s/^/\|/gi;
s/(\|)(number: .*?$|From \d+\/\d+\/\d+ to \d+\/\d+\/\d+|^Units|^Current Face|^Price|^FX|As of \d+\/\d+\/\d+)/$2/gi;
s/\| +|\|\t+/\|/gi;
s/\n/\t/gi;
s/\|/\n/gi;
s/^/\|/gi;
s/(\|)(.*?number: .*?$)/$2/gi;
s/\n//gi;
s/\|/\n/gi;

      print;
}
print "\n\ndone"
4

1 回答 1

1

您的一些单行(#1、#7 和#11)插入了行。你的一些单行(#6 和#10)合并了行。这会影响后续单行代码将其视为一行输入的内容。

在你的新程序中,这意味着一些替换的看到是它们的单行对应物的两倍,或者只是一部分。

您可以通过添加来一次读取整个文件来解决此问题local $/;

也就是说,我挑战你的说法,即你的单线工作。例如,第 3 个模式|在每行的开头放置 a,那么如何^Units在第 4 个模式中匹配?

于 2013-06-03T22:10:38.973 回答