in reply to backreference replaced as literal or just fails

You need to doubly evaluate the substitution string:

use strict; use warnings; my $fileStr = <<'END_FILE'; ([A-Za-z])\.[A-Za-z],$1 END_FILE open my $inFile, "<", \$fileStr or die "Can't open file: $!\n"; my $rrow_test = 'A.BC'; while (my $regex = <$inFile>) { chomp $regex; my @rex = split (/,/, $regex); $rrow_test =~ s/$rex[0]/$rex[1]/eeg; print "$rrow_test\n"; } close $inFile;

Prints:

AC

Note that double evaluating the string is like using string eval and is generally considered evil, or at least a huge security risk. For example, try it with the string '([A-Za-z])\.[A-Za-z],@{[print "this could have been: `rm *`\n"]}' in $fileStr


True laziness is hard work

Replies are listed 'Best First'.
Re^2: RESOLVED backreference replaced as literal or just fails
by brwarn (Novice) on Mar 10, 2009 at 22:17 UTC
    Thank you everyone for your assistance!