my %escapes = (
'<' => '&lab;',
'>' => '&rab;',
'(' => '&lcb;',
')' => '&rcb;',
'[' => '&lsb;',
']' => '&rsb;',
'&lab;' => 'lab',
'&lcb;' => 'lcb',
'&lsb;' => 'lsb',
'&rab;' => 'rab',
'&rcb;' => 'rcb',
'&rsb;' => 'rsb',
);
#my $escapes_pat = join '', map quotemeta, keys %escapes;
#my $escapes_re = qr/$escapes_pat/;
my $escapes_re = qr/[<>()\[\]]|&[lr][acs]b;/; # Manually tweaked.
sub escape(_) {
my ($s) = @_;
$s =~ s/($escapes_re)/$escapes{$1}/g;
return $s;
}
####
my %escapes = qw( & & < &LAB; > &RAB; ( &LCB; ) &RCB; [ &LSB; ] &RSB; );
sub escape(_) {
my ($s) = @_;
$s =~ s(/[&<>()\[\]])/$escapes{$1}/g;
return $s;
}
####
my %escapes = qw( & & < &LAB; > &RAB; ( &LCB; ) &RCB; [ &LSB; ] &RSB; );
sub escape(_) { $_[0] =~ s(/[&<>()\[\]])/$escapes{$1}/gr }