my %escapes = qw( & & < &LAB; > &RAB; ( &LCB; ) &RCB; [ &LSB; ] &RSB; ); sub escape(_) { my ($s) = @_; $s =~ s(/[&<>()\[\]])/$escapes{$1}/g; return $s; }