我正在尝试编写一些Perl来将一些基于HTML的文本转换为MediaWiki格式并遇到以下问题:我想在一些文本的分隔子区域内进行搜索和替换,并想知道是否有人知道一个整洁的方式去做吧。我的输入流类似于:
Please mail <a href="mailto:help@myco.com&Subject=Please help&Body=Please can some one help me out here">support.</a> if you want some help.
我想分别将Please help
和Please can some one help me out here
更改为Please%20help
和Please%20can%20some%20one%20help%20me%20out%20here
,而不更改该行上的任何其他空格。
当然,我还需要能够在线上处理多个这样的链接,因此拼接不是一个好选择。
我已经对Perl教程网站(这不是我的第一语言)进行了很好的了解,但是没有像这样的例子。任何人都可以建议这样做的优雅方式吗?
答案 0 :(得分:5)
您的任务分为两部分。查找并替换mailto
URI - 为此使用HTML解析模块。 Stack Overflow上详细介绍了该主题。
另一部分是规范化URI。模块URI
适用于此目的。
use URI::mailto;
my @hrefs = ('mailto:help@myco.com&Subject=Please help&Body=Please can some one help me out here');
print URI::mailto->new($_)->as_string for @hrefs;
__END__
mailto:help@myco.com&Subject=Please%20help&Body=Please%20can%20some%20one%20help%20me%20out%20here
答案 1 :(得分:-3)
为什么不直接在引号中搜索“Body =”标记,并用%20替换每个空格。
我甚至不会使用常规表达式,因为我发现除了质量变化之外的任何东西都有用,因为线上的所有内容都会发生变化。
简单循环可能是最佳解决方案。