HTTP-404 has asked for the wisdom of the Perl Monks concerning the following question:

Hello again, sorry for bugging so much in 1 day i have following code
$html=$ua->request($req)->as_string; $html =~ /<td class="ContenidoTitulo" colspan="3">Trucos de(.*)para(. +*)<\/td>/; $game=$1; $platform=$2; $html =~ /<td class="ContenidoTexto" colspan="3"> CODIGOS<br>(.*)<\/t +d>/; $cheat=$1;
it runs in for loop
$game=$1; $platform=$2; $cheat=$1;
are displayed correctly on second run
$game=$1; $platform=$2; $cheat=$1;
$1 same as $1 from other pattern Thanks in Advance on the first one

Replies are listed 'Best First'.
Re: Something wrong reusng $1 vars
by wog (Curate) on Jul 30, 2001 at 00:39 UTC
    I'm having trouble understanding your question, but I think your problem is probably caused by the second regex not matching. When a regex doesn't match the $1, $2, etc. variables are left the same. (Handy so you can do things like $something = $1 if /pat1/ or /pat2/ or /pat3/; and take the $1 from whatever pattern matches.)

    If this is the case then the solution is to fix your regex to match what you want it to match. You might find HTML::TableExtract and/or HTML::Parser more convient for this task then regexs alone.

    update: If you want to check if a regex matches you should examine it's return value, which is (almost) always a good idea. For example: $html =~ /some regex here/ or die "Couldn't match ...\n"; If you get into a habit of having some code to handle the regex not matching you can prevent difficult to fiquire out bugs from occuring when $1 and such doesn't contain what you expect.