There are some really helpful people in the Perl community. I advertised the original posting on comp.lang.perl.misc and received some very useful responses from John W. Krahn and Michele Dondi, as below.
With respect to the rules, John wrote:
John> Why [were] you converting the '|' character and the 'e' character to 'e'?
John> The . character class matches a lot more than just letters, or did you really mean "replace any first character except newline with 'n'".
John> The . character class matches a lot more than just letters.
Then, with respect to the string eval() of each rule, John said, "Ouch! Use a dispatch table instead of string eval()."
At this point Michele Dondi chipped in with, ">my %rule = (
> 1 => sub {
> ( my $arg = shift ) =~ tr/s//d;
> return $arg;
> },
> 2 => sub {
> return join '', sort split //, shift;
> },
Since the keys are numbers, an array may be appropriate."
So there you have it, better rules, anonymous subroutines, and hashes. Powerful stuff.
I wonder how Tcl and the other languages would have done it. Or Protium, for that matter. Any takers?
© Copyright Bruce M. Axtens, 2008