in reply to Re^2: no reaction on string replace
in thread no reaction on string replace

You should edit your first post instead of posting your code again. The editing area should appear just below your original post.

About your posted-again code, there's still no > in your second open, so you can't write on the file. Write open (FILE, ">", "$SCU") or die "Could not open file $SCU: $!";. $! is a special var that contains the error that occurred while trying to open your file.

If you do not want to modify the output of @lines in your for loop, you can either make an explicit copy with my $copy = $_; or, if you use a recent version of Perl, use the /r switch on the substitution, which means that the result is returned, and the original variable is not affected. If you do not write $var =~ s/pattern/replace/; but just s/pattern/replace; it works on $_ by default BTW. So in your case you could write (if you get an error, your version of Perl is probably too old):  push @newlines, s/<ABCD>/xyz/rg for @lines;

Replies are listed 'Best First'.
Re^4: no reaction on string replace
by semipro (Novice) on Sep 11, 2013 at 19:27 UTC
    Hi, I just tried out your tip an I thought I got it..but I guess that is not the case :-(. The Code is now:
    #!/usr/bin/perl -w use strict; my $SCU= 'C:/Users/Desktop/a.txt'; open(FILE, "<$SCU") || die "File not found"; my @lines = <FILE>; close(FILE); #my $copy = $_; my @newlines; foreach(@lines) { push @newlines, s/<test>/xyz/rg for @lines; } open (FILE, ">", "$SCU") or die "Could not open file $SCU: $!"; print FILE @newlines; close(FILE);
    It is still no working. Can you tell me what I messed up? Thank you!
      You don't need the foreach loop as you have for @lines.
      #!/usr/bin/perl -w use strict; my $SCU = 'C:/Users/Desktop/a.txt'; open (FILE, '<', $SCU) or die "$SCU File not found : $!"; my @lines = <FILE>; close (FILE); my @newlines; #foreach(@lines) { push @newlines, s/test/xyz/rg for @lines; #} open (FILE, '>', $SCU) or die "Could not open file $SCU: $!"; print FILE @newlines; close (FILE);
      poj

      With the mistake that poj told you about, not only should you have add the content of your file modified, but the new lines should be in your file several times. If it's not the problem you have, try to add a print @lines to check that your file is read correctly. And if it is try to print @newlines to see if its content is what you expect.