HTML::Entities を使う方法と、正規表現を段階的に使う方法と、変換テーブルを用意して正規表現で置換する方法と、どれが一番速いか気になったので計測してみました。& から順番に変換していく方法が一番速かったです。ベンチマークスクリプトは以下です。 Rate cpan once step cpan 372/s -- -32% -56% once 550/s 48% -- -35% step 847/s 127% 54% -- use strict; use warnings; use Benchmark ':all'; use HTML::Entities; my $html = join '', <DATA>; my %table = ( '&' => '&', '<' => '<', '>' => '>', '"' => '"', "'" => '&