fri*_*edo 30
HTML :: Entities是你的朋友.
use HTML::Entities;
my $encoded = encode_entities( "foo & bar & <baz>" );
Run Code Online (Sandbox Code Playgroud)
bri*_*foy 27
当第一个回答这个问题时,HTML :: Entities是大多数人可能使用的模块.它是纯Perl,默认情况下会转义HTML保留字符><'"&和宽字符.
最近,HTML :: Escape出现了.它有XS和纯Perl.如果您使用的是XS版本,它的速度比HTML :: Entities快十倍.但是,它只会逃脱><'"&,无法更改默认值.这是与XS版本的区别:
Benchmark: timing 10000 iterations of html_entities, html_escape...
html_entities: 14 wallclock secs (14.09 usr + 0.01 sys = 14.10 CPU) @ 709.22/s (n=10000)
html_escape: 1 wallclock secs ( 0.68 usr + 0.00 sys = 0.68 CPU) @ 14705.88/s (n=10000)
Run Code Online (Sandbox Code Playgroud)
这里是纯粹Perl版本的公平战斗:
Benchmark: timing 10000 iterations of html_entities, html_escape...
html_entities: 14 wallclock secs (13.79 usr + 0.01 sys = 13.80 CPU) @ 724.64/s (n=10000)
html_escape: 7 wallclock secs ( 7.57 usr + 0.01 sys = 7.58 CPU) @ 1319.26/s (n=10000)
Run Code Online (Sandbox Code Playgroud)
您可以在Surveyor :: Benchmark :: HTMLEntities中获得这些基准测试.我解释了如何使用Surveyor :: App 分发基准测试.