It's hard to just "group" together regexes into one regex, unless you make a "dispatch table".
s/([b-zA-Z]):/\1/g;
s/[aV] /A /g;
s/a: /A: /g;
s/2:/2 %/g;
s/9|3:/&/g;
s/([aeO])I/\1j/g;
tr/QRC@6{/Orx**E/;
my %trans;
$trans{"$_:"} = $_ for 'b' .. 'z', 'A' .. 'Z';
$trans{"$_ "} = "A " for 'a', 'V';
$trans{"a: "} = "A: ";
$trans{"2:"} = "2 %";
$trans{$_} = "&" for 9, '3:';
$trans{"${_}I"} = "${_}j" for 'a', 'e', 'O';
my $regex = join '|', map quotemeta($_), keys %trans;
### WARNING -- this does not allow for nested
### translations (like (A => 'BC', B => 'D') on
### the string "A" will yield "BC", not "DC")
$string =~ s/($regex)/$trans{$1}/g;
$string =~ tr/QRC@6{/Orx**E/;
japhy --
Perl and Regex Hacker