It seems to work as expected and, as far as I can tell, as you wish for me:
use strict;
my $text = <<TEXT;
<p>Before new line.
After new line.</p>
TEXT
print "Before: |$text|\n";
$text=~s#<p>(.+?)<\/p>#"<p>".&enter($1)."<\/p>"#gsie;
print "After: |$text|\n";
sub enter
{
my $new;
($new)=$1;
$new=~s/\n//gsi;
return $new;
}
Prints:
Before: |<p>Before new line.
After new line.</p>
|
After: |<p>Before new line.After new line.</p>
|
If that is not what you want then perhaps you should provide your own sample and expected output?
That aside, there are a few things worth mentioning:
- it is generally considered bad practice to call subs using & these days
- you pass a parameter to the sub, but don't use it (see below)
- you use $1 as a "global" to the sub which is bad in itself, but also there is no need! (see below)
- hand parsing HTML is a bad, mad and dangerous thing to do. Use HTML::TreeBuilder or one of the other modules designed for the purpose
- (minor) you use # to delimit the parts of the substitution, but quote the / - / is not special if not the delimiter so doesn't need to be quoted
The sub would be better written:
sub enter
{
my $new = shift;
$new=~s/\n\s*/ /gi;
return $new;
}
Note the alteration to the regex so that a space is inserted in place of a new line, but that leading white space on the line is removed:
After: |<p>Before new line. After new line.</p>
|
DWIM is Perl's answer to Gödel
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.