Shalabh wrote:
> hi all,

Hi. Use a better subject line.

>        i am searching from a tab delimited text file and it is
> returning the line with tabs which contains the search string into an
> array named @found_array, now i want to display it on an html page in
> a predefined format and for that i have to split it with tab as the
> delimiting character. any idea for doing this as i have tried split
> function but i think it doesnt work on arrays. any help is
> appreciated. Thanks in advance the code is as follows
> #!/usr/bin/perl -w

Always 'use strict;'

> use CGI;
> use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
> $query = new CGI;
> print "Content-type: text/html\r\n\r\n";
> print $query->start_html(-title=>  "new",
>                          -bgcolor=>'#DFD2B3',
>                          );
> $keyword=$query->param('s1');
> chomp($keyword);

Why?

> $keyword =~ s/([~;<>\*\|`&\$!#\(\)\[\]\{\}:'"\.\/])//g;

Don't need the capturing parens. Also, lots of those chars don't need to be
escaped inside a character class.

> open (IN, "< pdata") or die ("Cannot open database!");
> @found_array = ();
> while ($parray=<IN>)
>                             {
>         @found_array = (@found_array,grep (/$keyword/i , $parray));

grep is unecessary here, since you're only operating on one line at a time.

This can be simplified to:

   push @found_array, $parray if $parray =~ /$keyword/oi;

(/o can be added since keyword doesn't change once it's been assigned)

> }
> print "<font size=4 color=blue><b>You Queried for $keyword</b></font>\n"; 
> print @found_array;

If you want to output the @found_array as an HTML table, you can do
something like this:

   print $query->table(
       $query->Tr([
           map $query->td([split /\t/]), @found_array
       ]),
   );

-- 
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