in reply to Re^3: substitute character
in thread substitute character

If I use substitution of $1, then <span><p> is removed from the input data which printing the output. In the script
#!/usr/bin/perl my $line; while (my $line = <DATA>){ if($line =~ m/<span><p>(.*)/){ $line = $1; $line =~ s/</<\/p><p>/g; print $line; } #} } __DATA__ <span><p>This affected me deeply because < I was being treated for dep +ression then. < felt she was replacing me as mother and grandmother.
From the above code the output is below.
This affected me deeply because </p><p> I was being treated for depres +sion then. </p><p> felt she was replacing me as mother and grandmothe +r.
But I have to print the line, such that it does substitution
<span><p>This affected me deeply because </p><p> I was being treated f +or depression then. </p><p> felt she was replacing me as mother and g +randmother.

Replies are listed 'Best First'.
Re^5: substitute character
by Corion (Patriarch) on Sep 02, 2009 at 09:36 UTC

    See perlre on backreferences, but in the long run, you want something like HTML::TokeParser or HTML::TreeBuilder, because modifying HTML using regular expressions only works for reasonably well-formed HTML.

      #!/usr/bin/perl my $line; while (my $line = <DATA>){ $line =~ s/<span><p>(.*)/defined ($1) ? "<" : '</p><p>'/eg; print $line; } __DATA__ <span><p>This affected me deeply because < I was being treated for dep +ression then. < felt she was replacing me as mother and grandmother.
      This is just printing '<'. But the output needed is
      <span><p>This affected me deeply because </p><p> I was being treated f +or depression then. </p><p> felt she was replacing me as mother and g +randmother.
      A reply falls below the community's threshold of quality. You may see it by logging in.