是否有可以使用错误的HTML 的Perl模块(例如从Microsoft Word复制的内容)并将其解析为格式良好的HTML ?我查看了 HTML :: Tidy ,但它已经获得了horrible reviews on CPAN。我们有一个自定义遗留模块,它基本上是tidy命令行版本的包装器(它似乎与HTML :: Tidy差不多),但它将文件写入磁盘并将其读回,这可能是一个很大的性能罚款。当然,利用Perl令人敬畏的文本解析功能,有更好的方法可以做到这一点吗?
答案 0 :(得分:1)
两件事:
1)确实没有tidy的替代方案,因为它为大多数人提供了工作。是否有一些命令行工具的行为不适合您?也许如果你提出一个为什么它不符合鼻烟的例子我们可以更好地理解这个问题。
2)关于性能,你可以考虑修改你的包装器以便整齐地调用open2
以避免磁盘往返:
use IPC::Open2;
my $pid = open2(\*FROM_TIDY, \*TO_TIDY, '/usr/bin/tidy')
or die "couldn't open";
# give tidy our html and close the handle to tell it we're done
print(TO_TIDY $html_string);
close(TO_TIDY);
# read in the tidy html
while (<FROM_TIDY>) {
print;
}
close(FROM_TIDY);