By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,922 Members | 1,936 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,922 IT Pros & Developers. It's quick & easy.

String Concatenation problems

P: n/a
Consider the following chunk of code:
--------------------------------------------------
open (IN, "<:raw", "test2.txt") or die "Can't open test.txt";

chomp($line = <IN>);

# Capture excerpt
$line =~ m/>([^<]+)/;

# Copy first line of excerpt
$pExcerpt = $1;

# Next line
chomp($line = <IN>);

# Untill we have reached the end of the section
until($line =~ m/<\/p>/i) {

# Capture useful text
$line =~ m/([^<]+)/;
chomp($line = <IN>);
}

# Capture the rest of the useful text
$line =~ m/([^<]+)/;

$pExcerpt = "$pExcerpt $1";

print "final: $pExcerpt\n";
-----------------------------------------------------------

The file test2.txt is as follows:
-------------------------------------------------
<p class=p1>I consider myself fortunate to stand before you today as I
make my
defense against all the accusations of the Jews. <i>Acts 26:2</i></p>
----------------------------------------------

When run:
P:\WEBPOP\EXPERI~1>excerpt.pl
defense against all the accusations of the Jews. you today as I make
my

P:\WEBPOP\EXPERI~1>
When I change the concatenation to as follows:
$pExcerpt = "$1 $pExcerpt";
The result is:
P:\WEBPOP\EXPERI~1>excerpt.pl
final: defense against all the accusations of the Jews. I consider
myself fortunate
to stand before you today as I make my

P:\WEBPOP\EXPERI~1>

Which is how I would expect it to work. Why does it not work the first
way(which is the way I need it)?
Perl reports itself as v5.8.3 built for MSWin32-x86-multi-thread,
binary build 809 provided by ActiveState Corp.
Thanks!

Daniel Bergquist
Jul 19 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
You may ignore my posting. I'm getting help in comp.lang.perl.misc.
Turns out part of my problem is that I'm trying to parse HTML with
regex's, apparently a deadly sin... :-)

Daniel Bergquist
Jul 19 '05 #2

P: n/a
Daniel Bergquist wrote:
Consider the following chunk of code:
--------------------------------------------------
open (IN, "<:raw", "test2.txt") or die "Can't open test.txt";
chomp($line = <IN>);
Why on earth would you be using binmode (:raw) and chomp() together?
defense against all the accusations of the Jews. you today as I make my


That looks suspiciously like a line of text ending with "as I make my"
being partially overwritten by another line. That's what happens when
you use chomp() is a manner such that it strips the "\n" but leaves "\r"
from a line ending with "\r\n".

Do you get any better results when you change "<:raw" to just "<"?
-Joe
Jul 19 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.