【发布时间】:2012-11-04 06:54:31
【问题描述】:
我需要用 Perl 中其他文件中的另一个多行文本替换文件中标签 (<stats>...</stats>) 之间的多行文本。我正在使用搜索和替换功能,但目前不工作。如果开始标签和结束标签都在同一行,那么我可以替换它们,否则它不会替换。例如,在目标文件中:
.
.
.
<stats>
<stat type="string" value="a" />
<stat type="string" value="b" />
<stat type="string" value="c" />
<stat type="string" value="d" />
</stats>
.
.
.
.
我的一段代码sn-p如下:
my $replacetext="<stats>"."@lines"."</stats>";
my $searchtext="<stats>.*</stats>";
# Here @file_lines is the array containing destination file and @lines is the array containing source file.
foreach (@file_lines)
{
$_=~ s/$searchtext/$replacetext/g;
}
'.*' 仅当开始标签和结束标签在同一行时才有效。
【问题讨论】:
-
如果文件不是很大,将其加载到字符串并替换正则表达式,而不是保存,如果文件很大,则需要使用标志变量,这将指示是否应该替换文本中的指针。 .. 编程没有单一的思考?
-
您考虑过使用 XML 解析器吗? CPAN 有很多用于处理 XML 的工具。
标签: xml perl xml-parsing