• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1081
  • Last Modified:

Perl Double quote problem.

Hello guys,im new to perl so i got a small problem here.Glad if anyone could help.
Im building a personal search engine and i would like to use double quotes to get the exact word/words.I got stuck and didnt know where to specify the double quotes to do the action.
 
My code:
#!c:/perl/bin/perl
read(STDIN, $buffer,$ENV{'CONTENT_LENGTH'});
@pairs = split(/&/,$buffer);
foreach $pair(@pairs){
($key,$value)=split(/=/,$pair);
$value =~ tr/+/ / ;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
#$value=~ s/\"//g; # strip double quotes
$formdata{$key}.="$value";
}
$search=$formdata{'search'};
open(INFO, "Docs.htm")or die "Can't open file for output"; # Open db for reading
@array=<INFO>;
close (INFO);
$count = 0;
print "Content-type:text/html\n\n"; #Content Header
print <<End_of_head;
<html>
<head><title>.::Search Results::.</title></head>
<body>
<h5>You Searched for :$search</h5>
End_of_head
   if($search eq "")
{
print "Error: Please type something";
}
else{
       #Both of the words
     $search =~ s/^\s+//;
     @cut = split(/\W/, $search);
     foreach $line  (@array){
     $count++;
     if (($line =~  /\b$cut[0]\b/i ) && ($line =~  /\b$cut[1]\b/i )) {
print <<End_of_line;
<font color="Red">Line<b> $count:</font> $line <br>
End_of_line
}
}
}
      #Exact word
    if ($search eq "'")
      {
       foreach $line  (@array){
     $count++;
     if ($line =~  /\b$search\b/i ){       
print <<End_of_line;
<font color="Red">Line<b> $count:</font> $line <br>
End_of_line      
      }
      }            
}
print <<End_of_Doc;
</body>
</html>
End_of_Doc
0
craziest
Asked:
craziest
  • 2
1 Solution
 
ozoCommented:
@cut = grep{defined}$search =~ /(\w+)|"([^"]+)"/g;
if( !@cut ){
   print "Error: Please type something";
}else{
     foreach $line  (@array){
         $count++;
         if ( !grep{$line !~  /\b\Q$_\E\b/i} @cut ){
print <<End_of_line;
<font color="Red">Line<b> $count:</font> $line <br>
End_of_line
          }
      }
}
0
 
craziestAuthor Commented:
Thats short and simple,worked well thanks!
if u dont mind,whats the regex for showing the tags in the file eg.
<TITLE> Hello</TITLE>
This doesnt show up when im searching.
Thanks again for your help.
0
 
ozoCommented:
s/</&lt;/g, s/>/&gt;/g for $line;
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now