open( ENTS, "<:utf8", $entfile ) or die "$entfile: $!"; my %entity = map { split } ; my $enames = join "|", keys %entity; while (<>) { s/\&($enames);/$entity{$1}/g; }