Solved

perl simple problem/riddle ?

Posted on 1998-12-14
2
233 Views
Last Modified: 2010-03-05
Hi,

This was taken from Matt's Simple Search script
and slightly adapted to match Matt's WWWBoard.

I have tried to add the information "Sorry ! No results found.."
and this is working fine except that I get the phrase
"Sorry ! No results...." printed 3 TIMES on the screen on
3 different lines.
When putting == instead eq the result is the same.

One of the operators like "if" or maybe brackets should
be wrong or misplaced ? Why this phrase is printed 3 times ?

Could you please take a look on this and give me some
tips.
Thanks in advance for your time.

Greetings
Adam

# This routine acts on each file loaded into the @FILES
foreach $FILE (@FILES) {
      open(FILE,"$FILE");
      @LINES = <FILE>;
      close(FILE);
      $url = '';
      $detail = '';
      foreach $line (@LINES) {
if ($line =~ "<TITLE>") {
$lpos = (index($line,"<T") + 7);
$rpos = (rindex($line,"/T"));
$detail = substr($line,$lpos,($rpos-$lpos)-1);
                              }
if ($line =~ "<title>") {
$lpos = (index($line,"<t") + 7);
$rpos = (rindex($line,"/t"));
$detail = substr($line,$lpos,($rpos-$lpos)-1);
                             }
if ($line =~ /$FORM{'query'}/i && $line !~ /<html>/i) {
                $url = "$FILE";
        }
      }
     elsif ($url ne '') {
           print "<LI><a href=\"$url\"><b>$detail</b></A>\n";
      }
      if (@LINES eq "0" ) {
           print "<B>Sorry ! No results matching your search keyword
!.</B><BR>\n";
      }
}
print "</OL><br><hr size=\"1\" width=\"100%\"><form method=POST
action=\"$ENV{'SCRIPT_NAME'}\">\n";
print "<p><center><b>Search by keyword : <input type=text name=\"query\"
size=30> \n";
print "<input type=submit value=\" New search ! \"></form></center>\n";
print "</body></html>";
exit;
_________________________________
0
Comment
Question by:abg
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 

Author Comment

by:abg
ID: 1206938
Edited text of question
0
 
LVL 5

Accepted Solution

by:
b2pi earned 50 total points
ID: 1206939
The code as you have it will not compile.  It has a structure of
foreach {
   foreach {
       if () {
       }
       if () {
       }
       if () {
       }
   } elsif (') {
   }
   if ( ) {
   }
}

And I don't know what a foreach () {} elsif does.

I think what you wanted was

# This routine acts on each file loaded into the @FILES
$matched = 0;
foreach $FILE (@FILES) {
    open(FILE,"$FILE");
    @LINES = <FILE>;
    close(FILE);

    $url = '';
    $detail = '';

    foreach $line (@LINES) {
      if ($line =~ "<TITLE>") {
          $lpos = (index($line,"<T") + 7);
          $rpos = (rindex($line,"/T"));
          $detail = substr($line,$lpos,($rpos-$lpos)-1);
      } elsif ($line =~ "<title>") {
          $lpos = (index($line,"<t") + 7);
          $rpos = (rindex($line,"/t"));
          $detail = substr($line,$lpos,($rpos-$lpos)-1);
      } elsif ($line =~ /$FORM{'query'}/i && $line !~ /<html>/i) {
          $url = "$FILE";
      }
    }
    if ($url ne '') {
      print "<LI><a href=\"$url\"><b>$detail</b></A>\n";
      $matched++;
    }
}

if (!$matched == 0 ) {
    print "<B>Sorry ! No results matching your search keyword!.</B><BR>\n";
} else {
    print "</OL><br><hr size=\"1\" width=\"100%\">";
    print "<form method=POST action=\"$ENV{'SCRIPT_NAME'}\">\n";
    print "<p><center><b>Search by keyword : ";
    print "<input type=text name=\"query\" size=30> \n";
    print "<input type=submit value=\" New search ! \"></form></center>\n";
    print "</body></html>";
}


0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Email validation in proper way is  very important validation required in any web pages. This code is self explainable except that Regular Expression which I used for pattern matching. I originally published as a thread on my website : http://www…
A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question