Sri Pen <mailto:[EMAIL PROTECTED]> wrote:

: and second @tableDefRows match the data between
: <TD*>..4321191..</TD>It matches all the data between
:  <TABLE><TOBDY><TR*>...</TR></TBODY></TABLE> something is wrong
: here.

    You are getting this because perl regular expressions are
greedy by default and because regular expressions alone are a poor
substitute for a good parser of HTML.


: Do I need to some how start from <TABLE> and my match all the
: way tofirst </td> and use some backtracking or something?

    Perhaps. It is probably best to just scrap the regular
expressions and use a module made for parsing HTML. Here's some
code using a general HTML parser, but there are many table parsers
as well.

my $parser = HTML::TokeParser->new( \$html_string );

my @rows;
while ( $parser->get_tag( 'tr' ) ) {

    # check error number
    next unless $parser->get_trimmed_text( '/td' ) eq '';

    # get next cell
    $parser->get_tag( 'td' );

    # check userid
    next unless $parser->get_trimmed_text( '/td' ) eq 'YHIRA';

    my @cells;
    while ( $parser->get_tag( 'td' ) ) {
        my $text = $parser->get_trimmed_text( '/td' );
        push @cells, $text if $text and $text =~ /4321191/;
    }

    push @rows, [EMAIL PROTECTED] if @cells;
}


HTH,

Charles K. Clarkson
-- 
Mobile Homes Specialist
254 968-8328


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to