Hi guys, I'm doing a script to search through a lot of files and doing some replacements. It is a lot of different replacements that has to be done so I list them in a .txt instruction file in two columns representing the strings to be matched and replaced and the new text. A problem arise when doing some more complex substitution, wanting to keep certain parts of a string while replacing others. To be specific in this case I want to remove the '' surrounding a string. The string between '' will change.
The problem comes from that I want to use the \1 (or $1) variable but since the substitution command looks like $line=~ s/$subst_from/$subst_to/ig; and the $1 is incorporated into the $subst_to variable it is being populated when the replecement string is assinged to $subst_to. How can I keep the substitution command as general as I have it, always taking the same to variables but still making use of the $1,...,$9 feature of Perl? I post you a test-program which shows my problem. List.\1 being printed after 'Result:' is the problem. It's developed in an cygwin-environment and executes using the command perl PerlSubstituteProblem.pl The printouts looks like this when I run it: Script started. subst_to: List.\1 '' should be removed in List.'123_KeepThis_123' $1_1: 123_KeepThis_123 $1_2: 123_KeepThis_123 Result: '' should be removed in List.\1 Same thing but non-general s//: '' should be removed in List.123_KeepThis_123 Changed in 1 places ________Program_______________ #!/usr/local/bin/perl use strict; use strict 'refs'; $|=1; #Flush ON print "Script started.\n"; my($nr_of_changes,$line,$line_copy, $subst_from,$subst_to)=0; $subst_from="List\\.'(\\w*)'"; $subst_to="List.\\1"; print "subst_to: $subst_to \n"; $line="'' should be removed in List.'123_KeepThis_123' \n"; print "$line"; if($line =~/$subst_from/i) { $line_copy=$line; print "\$1_1: $1 \n"; $nr_of_changes++; $line=~ s/$subst_from/$subst_to/ig; print "\$1_2: $1 \n"; print "Result: \n"; print "$line"; print "Same thing but non-general s//: \n"; $line_copy=~ s/$subst_from/List.\1/ig; print "$line_copy"; } print"Changed in $nr_of_changes places\n"; exit(0); __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/