String Concatenation problems

Discussion in 'Perl' started by Daniel Bergquist, Jul 13, 2004.

  1. 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
     
    Daniel Bergquist, Jul 13, 2004
    #1
    1. Advertising

  2. 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
     
    Daniel Bergquist, Jul 14, 2004
    #2
    1. Advertising

  3. Daniel Bergquist

    Joe Smith Guest

    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
     
    Joe Smith, Jul 16, 2004
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. walala
    Replies:
    3
    Views:
    4,813
    walala
    Sep 18, 2003
  2. Sukhbir Dhillon
    Replies:
    1
    Views:
    6,264
    Joe Smith
    Apr 5, 2004
  3. Paul Davis
    Replies:
    7
    Views:
    600
    Paul Davis
    Jul 17, 2003
  4. i80and
    Replies:
    3
    Views:
    333
    i80and
    Nov 10, 2006
  5. Andrew Berg
    Replies:
    13
    Views:
    1,303
    Andrew Berg
    Jul 11, 2011
Loading...

Share This Page