in reply to Reading Regexes from File

Your examples aren't regular expressions though they contain them. What you've got is a file full of substitutions. For that you probably want to use eval

Replies are listed 'Best First'.
Re^2: Reading Regexes from File
by Anonymous Monk on Apr 11, 2007 at 19:34 UTC
    Isn't a substitution a regex? I'm not sure I understand what you're trying to tell me to do.
      No. \s*M\s* is a regexp. s/\s*M\s*/MALE/si is Perl code (consisting of a substitution operator with a regexp, a replacement string and some options for operands). To run Perl code, you need to use eval EXPR.

      A simplistic example:

      my $str = 'Hello World!'; # Alias $_ to $str. foreach ($str) { # Assumes each substitute operator is on a different line. while (defined(my $code = <DATA>)) { eval($code) or die("Bad code at input line $.: $@\n"); } } print("$str\n"); # [hello world!] __DATA__ s/^/[/g s/$/]/g s/([A-Z])/lc($1)/eg

      An example allowing the reuse of the substitutions:

      my @substitutions; # Assumes each substitute operator is on a different line. while (defined(my $code = <DATA>)) { push @substitutions, eval("sub { $code }") or die("Bad code at input line $.: $@\n"); } my $str1 = 'Hello World!'; my $str2 = 'Good Day!'; # Alias $_ to the variable. foreach ($str1, $str2) { foreach my $substitution (@substitutions) { $substitution->(); } } print("$str1\n"); # [hello world!] print("$str2\n"); # [good day!] __DATA__ s/^/[/g s/$/]/g s/([A-Z])/lc($1)/eg