Loading ...
Sorry, an error occurred while loading the content.

Re: [PBML] Almost There - A Little More Help, Please?

Expand Messages
  • Ofir
    Dear Charles, I know my code is VERY clumsy. I guess that s because I m learning all by myself (and great guys like you). You can take a look at the result
    Message 1 of 5 , Mar 31, 2002
    • 0 Attachment
      Dear Charles,
      I know my code is VERY clumsy. I guess that's because I'm learning all by
      myself (and great guys like you).

      You can take a look at the result (uotput), at this address:
      http://fsuarchive.jdc.org.il/cgi-bin/ticker/ofir_news.cgi
      I'm sorry it's in Hebrew, but I guess you can get the idea.

      The whole idea is fetching a news file, from our local news backend text
      file (at:
      http://www.ynet.co.il/Ext/Chn/News/NewsTickerCgi/0,8102,0,00.txt ) which has
      a very ugly structure ...)

      So, I'm fetching this file, saving it on my server, open it, reading and
      splitting the four-lines records (there are always only 5 news items there,
      i.e. five - four lines records, and if you see the source of it - you'll
      notice 2 excessive blank lines there).

      Then, I'm cleaning the unwanted characters (there's a "@f=arial.gif" and
      other characters I don't need), and printing out the news in a table (at:
      http://fsuarchive.jdc.org.il/cgi-bin/ticker/ofir_news.cgi)

      So, there are 5 news items, but I always get a 6 blank line at the end of
      the table.
      I added the VERY not descriptive $c (counter for printing: 1,2, 3, etc in
      the counter column...) and $i - for altering the lines HTML class (thus -
      their colors).

      No matter what I do - always I get the 6 lines.

      I'm attaching my whole very ill code, and I hope you won't be too mad at me
      ;-)


      ### Begin of ill Code

      #!D:/Perl/bin/Perl.exe
      ######### Configurations
      use LWP::Simple;
      use CGI::Carp qw(fatalsToBrowser); # just for debugging
      $mypath = "D:/apachegr/apache/htdocs/news";
      $news_file="ynet.txt";
      $my_file_name="$mypath/$news_file";
      $ynet_base="http://www.ynet.co.il";
      $logfile = "d:/apachegr/apache/htdocs/news/ynet_log1.txt";
      ######### Configurations

      ######### Functions
      &Fetch_It;
      &Header;
      &get_records2($logfile);
      &Footer;
      ######### Functions

      ######### Header
      sub Header {
      print "Content-type: text/html\n\n";
      print "<HTML>\n";
      print "<HEAD>\n";
      print "<meta http-equiv='content-type' content='text/html;
      charset=windows-1255'>\n";
      print "<title>JDC-News</title>\n";

      print <<"HTML_code";
      <style type="text/css">
      <!--
      .presser {background-color:#6699cc; font-family: Arial, Helvetica,
      sans-serif; font-size: 12; font-weight: bold; color: #FFFFFF}
      .roll2 { font-family: Arial, Helvetica, sans-serif; font-size: 12px; COLOR:
      #0000FF; FONT-WEIGHT: normal; TEXT-DECORATION: underline}
      .presser1 {background-color:#6699cc; font-family: Arial, Helvetica,
      sans-serif; font-size: 12; font-weight: bold; color: #FFFFFF; border: 1pt
      solid Black;}
      .back {color: #000000; background-color: #FFFFFF}
      .MainTable { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
      font-weight: normal; color: #000066}
      .TableHead { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
      font-weight: normal; color: #FFFFFF}
      .TableHead1 { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
      font-weight: normal; color: #FF0000}
      .DATA1 { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
      font-weight: normal; color: #FFFFFF; background-color:#C0C0C0}
      .DATA0 { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
      font-weight: normal; color: #FFFFFF; background-color:#999999}
      -->
      </style>
      HTML_code

      print "</HEAD>\n";
      print "<BODY>\n";
      print <<"END";
      <table border=0 cellpadding=0 cellspacing=0 width=100% bgcolor=FFCC00>
      <tr width="50%" bgcolor="#3399CC" align="left">
      <td bgcolor="#C0C0C0" class="TableHead">
      JDC-News</font></td>
      <td bgcolor="#C0C0C0" class="TableHead">2002
      </td>
      <td width="50%" bgcolor="#C0C0C0" align="right"
      class="TableHead">Version 1.0</td>
      </tr>
      </table>
      END
      }
      ######### Header

      ######### Get Records2
      sub get_records2 {
      @hdrs = ('#','çãùåú','ùòä');
      print "<BR><BR><TABLE BORDER=1 CELLSPACING=1 CELLPADDING=2 CLASS=DATA1
      ALIGN=CENTER DIR=RTL><TR><TH>";
      print join('</TH><TH>',@hdrs);
      print "</TH></TR>\n";

      my $file_name = shift;
      local *FH;

      open(FH,"$file_name") || die "Cannot open $file_name: $!";

      $i = 0;
      $c = 1;
      until (eof FH) {
      my @x = map scalar <FH>, 1 .. 4;

      $x[7] = $c; # counter
      $x[0] =~ s/\@f=arial.gif c=#888888 r=javascript:openWin//;
      $x[0] =~ s/\('//;
      $x[0] =~ s/\'\)\;//;
      $x[0] =~
      s/','NewsFlash','menubar=no,resizable=no,scrollbars=yes,width=449,height=300
      //; $x[0] = "$ynet_base/$x[0]";
      $x[3] =~ s/$x[3]/<A HREF=\"$x[0]\">$x[3]<\/A>/;
      @x = @x[7,3,1];
      print "<TR CLASS=DATA$i VALIGN=TOP><TD>\n";
      print join("</TD><TD>",@x);
      print "</TD></TR>\n\n";
      $i = $i ? 0 : 1;
      $c++ ;
      }
      close(FH);

      print "</TABLE><BR><BR>";
      print "</BODY>";
      print "</HTML>";
      }
      ######### Get Records2

      ######## Footer
      sub Footer {
      print <<"END";
      <table border=0 cellpadding=0 cellspacing=0 width=100% bgcolor=FFCC00>
      <tr width="50%" bgcolor="#3399CC" align="left">
      <td bgcolor="#C0C0C0" class="TableHead">
      JDC-News</font></td>
      <td bgcolor="#C0C0C0" class="TableHead">2002
      </td>
      <td width="50%" bgcolor="#C0C0C0" align="right"
      class="TableHead">Version 1.0</td>
      </tr>
      </table>
      </BODY>
      </HTML>
      END
      }
      ######## Footer

      ######## Fetch_It
      sub Fetch_It {
      $url = "http://www.ynet.co.il/Ext/Chn/News/NewsTickerCgi/0,8102,0,00.txt";
      $html = get $url;
      ### $html =~ s/\r\n//g;
      open(DEST, ">$logfile") or die "Cannot open $file_name: $!";
      print DEST "$html\n";
      close(DEST);
      }
      ### End of ill Code
      Ofir







      ----- Original Message -----
      From: "Charles K. Clarkson" <cclarkson@...>
      To: <perl-beginner@yahoogroups.com>
      Sent: Sunday, March 31, 2002 7:07 PM
      Subject: Re: [PBML] Almost There - A Little More Help, Please?


      > From: "Ofir" <ofirb1@...> wrote:
      >
      > : Hi all,
      > : Thank you very much for your help (all of you)!
      > : I'm almost there...Can someone help?
      > :
      > : I'm reading in a file with 4 lines per record. i.e:
      > : Line 1
      > : Line 2
      > : Line 3
      > : Line 4
      > : ... etc ...
      > :
      > : Now, the file has two excessive lines AFTER the last record, and so
      far - I
      > : can't remove it.
      >
      > I added 2 blank lines at the end of the 8 line test file and the
      result
      > was the same. Can you be more specific?
      >
      > : When I'm printing out the file content - I have another excessive
      "blank"
      > : records. i.e: if the file contains 5 records - I'm getting another -
      number
      > : 6 counter, and a blank non-exist record. How can I eliminate it?
      >
      > Show us some actually data, you're not making sense to me.
      >
      > : Here's the main portion of the code I use so far:
      >
      > <soapbox>
      > You should really use strict and warnings, even for a small
      > piece of code like this.
      > </soapbox>
      >
      > : ######### Get Records2
      > : sub get_records2 {
      > : @hdrs = ('Counter','Date','News');
      > : print "<BR><BR><TABLE BORDER=1 CELLSPACING=1 CELLPADDING=2 CLASS=DATA1
      > : ALIGN=CENTER DIR=RTL><TR><TH>";
      > : print join('</TH><TH>',@hdrs);
      > : print "</TH></TR>\n";
      > :
      > : my $file_name = shift;
      > : local *FH;
      > : open(FH,"$file_name") || die "Cannot open $file_name: $!";
      > : $i = 0;
      > : $c = 1;
      >
      > Wow, $i and $c are pretty descriptive variable names! :)
      >
      > : until (eof FH) {
      > : my @x = map scalar <FH>, 1 .. 4;
      > : @x = @x[7,3,1];
      >
      > This array (@x) never has more than 4 elements,
      > what's the idea of index 7?
      >
      > : print "<TR CLASS=DATA$i VALIGN=TOP><TD>\n";
      > : print join("</TD><TD>",@x);
      > : print "</TD></TR>\n\n";
      > : $i = $i ? 0 : 1;
      > : $c++ ;
      > : }
      > : close(FH);
      > : print "</TABLE><BR><BR>";
      > : print "</BODY>";
      > : print "</HTML>";
      > : }
      > : ######### Get Records2
      >
      > Okay class, can everyone say "Malformed HTML"?
      >
      > Consider CGI.pm or a template system for producing
      > HTML files and output.
      >
      > HTH,
      >
      > Charles K. Clarkson
      > --
      > Clarkson Energy Homes, Inc.
      > CJ Web Work - Domains for Real Estate Investors.
      >
      > E Pluribus Unum -- One from many.
      >
      >
      >
      >
      >
      >
      > Unsubscribing info is here:
      http://help.yahoo.com/help/us/groups/groups-32.html
      >
      > Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
      >
      >
      >
    • Charles K. Clarkson
      ... You can test for a malformed line in the until block. See below. ... There s an easier way to clean this up. Instead of all those substitutions just try to
      Message 2 of 5 , Apr 1, 2002
      • 0 Attachment
        "Ofir" <ofirb1@...> wrote:

        : Dear Charles,
        : I know my code is VERY clumsy. I guess that's because I'm learning all by
        : myself (and great guys like you).
        :
        : You can take a look at the result (output), at this address:
        : http://fsuarchive.jdc.org.il/cgi-bin/ticker/ofir_news.cgi
        : I'm sorry it's in Hebrew, but I guess you can get the idea.
        :
        : The whole idea is fetching a news file, from our local news
        : backend text file (at:
        : http://www.ynet.co.il/Ext/Chn/News/NewsTickerCgi/0,8102,0,00.txt )
        : which has a very ugly structure ...)
        :
        : So, I'm fetching this file, saving it on my server, open it, reading and
        : splitting the four-lines records (there are always only 5 news items there,
        : i.e. five - four lines records, and if you see the source of it - you'll
        : notice 2 excessive blank lines there).

        You can test for a malformed line in the until block. See below.

        : Then, I'm cleaning the unwanted characters (there's a "@f=arial.gif" and
        : other characters I don't need), and printing out the news in a table (at:
        : http://fsuarchive.jdc.org.il/cgi-bin/ticker/ofir_news.cgi)

        There's an easier way to clean this up. Instead of all those
        substitutions just try to match the url. Pull it out if it matches
        or continue (or end) if it doesn't.

        last unless $x[0] =~ /openWin\('([^']*)/;

        This skips printing that sixth table row. The url is in $1 on a match.

        : So, there are 5 news items, but I always get a 6 blank line at the end of
        : the table.
        : I added the VERY not descriptive $c (counter for printing: 1,2, 3, etc in
        : the counter column...) and $i - for altering the lines HTML class (thus -
        : their colors).
        :
        : No matter what I do - always I get the 6 lines.
        :
        : I'm attaching my whole very ill code, and I hope you won't be too mad at me
        : ;-)

        No offense Ofir, but I don't even know you. How could I possibly
        be mad at you?

        <soapbox>
        I added:
        use strict;
        use warnings;

        and added 'my ' in front of the variables and, sure enough, there's
        a typo near the bottom of the script. Doesn't affect the operation
        unless there's an error. I let you find it on your own.
        </soapbox>

        : ### Begin of ill Code
        :
        : #!D:/Perl/bin/Perl.exe
        : ######### Configurations
        : use LWP::Simple;
        : use CGI::Carp qw(fatalsToBrowser); # just for debugging
        : $mypath = "D:/apachegr/apache/htdocs/news";
        : $news_file="ynet.txt";
        : $my_file_name="$mypath/$news_file";
        : $ynet_base="http://www.ynet.co.il";
        : $logfile = "d:/apachegr/apache/htdocs/news/ynet_log1.txt";
        : ######### Configurations

        :
        : ######### Functions
        : &Fetch_It;
        : &Header;
        : &get_records2($logfile);
        : &Footer;
        : ######### Functions

        Get out of the habit of placing the '&' prefix on subroutine
        calls:

        Fetch_It();
        Header();
        get_records2($logfile);
        Footer();

        : ######### Header
        : sub Header {
        : print "Content-type: text/html\n\n";
        : print "<HTML>\n";
        : print "<HEAD>\n";
        : print "<meta http-equiv='content-type' content='text/html;
        : charset=windows-1255'>\n";
        : print "<title>JDC-News</title>\n";
        :
        : print <<"HTML_code";
        : <style type="text/css">
        : <!--
        : .presser {background-color:#6699cc; font-family: Arial, Helvetica,
        : sans-serif; font-size: 12; font-weight: bold; color: #FFFFFF}
        : .roll2 { font-family: Arial, Helvetica, sans-serif; font-size: 12px; COLOR:
        : #0000FF; FONT-WEIGHT: normal; TEXT-DECORATION: underline}
        : .presser1 {background-color:#6699cc; font-family: Arial, Helvetica,
        : sans-serif; font-size: 12; font-weight: bold; color: #FFFFFF; border: 1pt
        : solid Black;}
        : .back {color: #000000; background-color: #FFFFFF}
        : .MainTable { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
        : font-weight: normal; color: #000066}
        : .TableHead { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
        : font-weight: normal; color: #FFFFFF}
        : .TableHead1 { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
        : font-weight: normal; color: #FF0000}
        : .DATA1 { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
        : font-weight: normal; color: #FFFFFF; background-color:#C0C0C0}
        : .DATA0 { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
        : font-weight: normal; color: #FFFFFF; background-color:#999999}
        : -->
        : </style>
        : HTML_code

        Good for you! Stylesheets are great. You should look into using
        CGI::Application for CGI. I use CGI::APpplication + HTML::Template.
        Quite a learning curve, but well worth it.

        : print "</HEAD>\n";
        : print "<BODY>\n";
        : print <<"END";
        : <table border=0 cellpadding=0 cellspacing=0 width=100% bgcolor=FFCC00>
        : <tr width="50%" bgcolor="#3399CC" align="left">
        : <td bgcolor="#C0C0C0" class="TableHead">
        : JDC-News</font></td>
        : <td bgcolor="#C0C0C0" class="TableHead">2002
        : </td>
        : <td width="50%" bgcolor="#C0C0C0" align="right"
        : class="TableHead">Version 1.0</td>
        : </tr>
        : </table>
        : END
        : }
        : ######### Header
        :
        : ######### Get Records2
        : sub get_records2 {
        : @hdrs = ('#','çãùåú','ùòä');
        : print "<BR><BR><TABLE BORDER=1 CELLSPACING=1 CELLPADDING=2 CLASS=DATA1
        : ALIGN=CENTER DIR=RTL><TR><TH>";
        : print join('</TH><TH>',@hdrs);
        : print "</TH></TR>\n";
        :
        : my $file_name = shift;
        : local *FH;
        :
        : open(FH,"$file_name") || die "Cannot open $file_name: $!";
        :
        : $i = 0;
        : $c = 1;

        This is very amusing. Just can't break old habits, huh. Took me
        the longest time to stop putting three letter prefixes on variable
        names (ala VB).

        : until (eof FH) {
        : my @x = map scalar <FH>, 1 .. 4;
        :
        : $x[7] = $c; # counter
        : $x[0] =~ s/\@f=arial.gif c=#888888 r=javascript:openWin//;
        : $x[0] =~ s/\('//;
        : $x[0] =~ s/\'\)\;//;
        : $x[0] =~
        : s/','NewsFlash','menubar=no,resizable=no,scrollbars=yes,width=449,height=300
        : //; $x[0] = "$ynet_base/$x[0]";
        : $x[3] =~ s/$x[3]/<A HREF=\"$x[0]\">$x[3]<\/A>/;
        : @x = @x[7,3,1];
        : print "<TR CLASS=DATA$i VALIGN=TOP><TD>\n";
        : print join("</TD><TD>",@x);
        : print "</TD></TR>\n\n";
        : $i = $i ? 0 : 1;
        : $c++ ;
        : }

        Okay, let's re-write the until block:

        my $toggle = 0;
        my $counter = 1;
        until (eof FH) {
        my @record = map scalar <FH>, 1 .. 4;

        last unless $record[0] =~ /openWin\('([^']*)/;
        chomp $record[3];
        my $link = qq|<A HREF="$ynet_base$1">$record[3]</A>|;

        print qq|<TR CLASS="DATA$toggle" VALIGN="TOP"><TD>\n|;
        print join("</TD><TD>", $counter++, $link, $record[1]);
        print "</TD></TR>\n\n";
        $toggle = $toggle ? 0 : 1;
        }

        That seems to fix it as for as I can tell. Let us know if you
        need more help.

        HTH,
        Charles K. Clarkson
        --
        Clarkson Energy Homes, Inc.
        CJ Web Work - Domains for Real Estate Investors.

        E Pluribus Unum -- One from many.
      • Tony Austin
        Getting an error that I m not sure the best way to resolve. I understand packages, global variable being attached to package main ... I m getting an error
        Message 3 of 5 , Apr 1, 2002
        • 0 Attachment
          Getting an error that I'm not sure the best way to resolve.

          I understand packages, global variable being attached to package 'main'...

          I'm getting an error "Global symbol '$email' requires explicit package name
          at line..."

          I'm declaring "my $email = '...'" in the initial few lines of code outside
          of a sub and prior to calling a sub....

          under 'use strict' is it necessary to define the package names?

          Thanks

          Tony
        • Ofir
          Wow, man! Will it really take me a lifetime to learn what you know about Perl? ... Thank you very much! I ll dive into your code ASAP! Ofir ... From: Charles
          Message 4 of 5 , Apr 1, 2002
          • 0 Attachment
            Wow, man! Will it really take me a lifetime to learn what you know about
            Perl? ...
            Thank you very much! I'll dive into your code ASAP!
            Ofir

            ----- Original Message -----
            From: "Charles K. Clarkson" <cclarkson@...>
            To: <perl-beginner@yahoogroups.com>
            Sent: Monday, April 01, 2002 12:00 PM
            Subject: Re: [PBML] Almost There - A Little More Help, Please?


            > "Ofir" <ofirb1@...> wrote:
            >
            > : Dear Charles,
            > : I know my code is VERY clumsy. I guess that's because I'm learning all
            by
            > : myself (and great guys like you).
            > :
            > : You can take a look at the result (output), at this address:
            > : http://fsuarchive.jdc.org.il/cgi-bin/ticker/ofir_news.cgi
            > : I'm sorry it's in Hebrew, but I guess you can get the idea.
            > :
            > : The whole idea is fetching a news file, from our local news
            > : backend text file (at:
            > : http://www.ynet.co.il/Ext/Chn/News/NewsTickerCgi/0,8102,0,00.txt )
            > : which has a very ugly structure ...)
            > :
            > : So, I'm fetching this file, saving it on my server, open it, reading and
            > : splitting the four-lines records (there are always only 5 news items
            there,
            > : i.e. five - four lines records, and if you see the source of it - you'll
            > : notice 2 excessive blank lines there).
            >
            > You can test for a malformed line in the until block. See below.
            >
            > : Then, I'm cleaning the unwanted characters (there's a "@f=arial.gif" and
            > : other characters I don't need), and printing out the news in a table
            (at:
            > : http://fsuarchive.jdc.org.il/cgi-bin/ticker/ofir_news.cgi)
            >
            > There's an easier way to clean this up. Instead of all those
            > substitutions just try to match the url. Pull it out if it matches
            > or continue (or end) if it doesn't.
            >
            > last unless $x[0] =~ /openWin\('([^']*)/;
            >
            > This skips printing that sixth table row. The url is in $1 on a match.
            >
            > : So, there are 5 news items, but I always get a 6 blank line at the end
            of
            > : the table.
            > : I added the VERY not descriptive $c (counter for printing: 1,2, 3, etc
            in
            > : the counter column...) and $i - for altering the lines HTML class
            (thus -
            > : their colors).
            > :
            > : No matter what I do - always I get the 6 lines.
            > :
            > : I'm attaching my whole very ill code, and I hope you won't be too mad at
            me
            > : ;-)
            >
            > No offense Ofir, but I don't even know you. How could I possibly
            > be mad at you?
            >
            > <soapbox>
            > I added:
            > use strict;
            > use warnings;
            >
            > and added 'my ' in front of the variables and, sure enough, there's
            > a typo near the bottom of the script. Doesn't affect the operation
            > unless there's an error. I let you find it on your own.
            > </soapbox>
            >
            > : ### Begin of ill Code
            > :
            > : #!D:/Perl/bin/Perl.exe
            > : ######### Configurations
            > : use LWP::Simple;
            > : use CGI::Carp qw(fatalsToBrowser); # just for debugging
            > : $mypath = "D:/apachegr/apache/htdocs/news";
            > : $news_file="ynet.txt";
            > : $my_file_name="$mypath/$news_file";
            > : $ynet_base="http://www.ynet.co.il";
            > : $logfile = "d:/apachegr/apache/htdocs/news/ynet_log1.txt";
            > : ######### Configurations
            >
            > :
            > : ######### Functions
            > : &Fetch_It;
            > : &Header;
            > : &get_records2($logfile);
            > : &Footer;
            > : ######### Functions
            >
            > Get out of the habit of placing the '&' prefix on subroutine
            > calls:
            >
            > Fetch_It();
            > Header();
            > get_records2($logfile);
            > Footer();
            >
            > : ######### Header
            > : sub Header {
            > : print "Content-type: text/html\n\n";
            > : print "<HTML>\n";
            > : print "<HEAD>\n";
            > : print "<meta http-equiv='content-type' content='text/html;
            > : charset=windows-1255'>\n";
            > : print "<title>JDC-News</title>\n";
            > :
            > : print <<"HTML_code";
            > : <style type="text/css">
            > : <!--
            > : .presser {background-color:#6699cc; font-family: Arial, Helvetica,
            > : sans-serif; font-size: 12; font-weight: bold; color: #FFFFFF}
            > : .roll2 { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
            COLOR:
            > : #0000FF; FONT-WEIGHT: normal; TEXT-DECORATION: underline}
            > : .presser1 {background-color:#6699cc; font-family: Arial, Helvetica,
            > : sans-serif; font-size: 12; font-weight: bold; color: #FFFFFF; border:
            1pt
            > : solid Black;}
            > : .back {color: #000000; background-color: #FFFFFF}
            > : .MainTable { font-family: Arial, Helvetica, sans-serif; font-size:
            12px;
            > : font-weight: normal; color: #000066}
            > : .TableHead { font-family: Arial, Helvetica, sans-serif; font-size:
            12px;
            > : font-weight: normal; color: #FFFFFF}
            > : .TableHead1 { font-family: Arial, Helvetica, sans-serif; font-size:
            12px;
            > : font-weight: normal; color: #FF0000}
            > : .DATA1 { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
            > : font-weight: normal; color: #FFFFFF; background-color:#C0C0C0}
            > : .DATA0 { font-family: Arial, Helvetica, sans-serif; font-size: 12px;
            > : font-weight: normal; color: #FFFFFF; background-color:#999999}
            > : -->
            > : </style>
            > : HTML_code
            >
            > Good for you! Stylesheets are great. You should look into using
            > CGI::Application for CGI. I use CGI::APpplication + HTML::Template.
            > Quite a learning curve, but well worth it.
            >
            > : print "</HEAD>\n";
            > : print "<BODY>\n";
            > : print <<"END";
            > : <table border=0 cellpadding=0 cellspacing=0 width=100% bgcolor=FFCC00>
            > : <tr width="50%" bgcolor="#3399CC" align="left">
            > : <td bgcolor="#C0C0C0" class="TableHead">
            > : JDC-News</font></td>
            > : <td bgcolor="#C0C0C0" class="TableHead">2002
            > : </td>
            > : <td width="50%" bgcolor="#C0C0C0" align="right"
            > : class="TableHead">Version 1.0</td>
            > : </tr>
            > : </table>
            > : END
            > : }
            > : ######### Header
            > :
            > : ######### Get Records2
            > : sub get_records2 {
            > : @hdrs = ('#','çãùåú','ùòä');
            > : print "<BR><BR><TABLE BORDER=1 CELLSPACING=1 CELLPADDING=2 CLASS=DATA1
            > : ALIGN=CENTER DIR=RTL><TR><TH>";
            > : print join('</TH><TH>',@hdrs);
            > : print "</TH></TR>\n";
            > :
            > : my $file_name = shift;
            > : local *FH;
            > :
            > : open(FH,"$file_name") || die "Cannot open $file_name: $!";
            > :
            > : $i = 0;
            > : $c = 1;
            >
            > This is very amusing. Just can't break old habits, huh. Took me
            > the longest time to stop putting three letter prefixes on variable
            > names (ala VB).
            >
            > : until (eof FH) {
            > : my @x = map scalar <FH>, 1 .. 4;
            > :
            > : $x[7] = $c; # counter
            > : $x[0] =~ s/\@f=arial.gif c=#888888 r=javascript:openWin//;
            > : $x[0] =~ s/\('//;
            > : $x[0] =~ s/\'\)\;//;
            > : $x[0] =~
            > :
            s/','NewsFlash','menubar=no,resizable=no,scrollbars=yes,width=449,height=300
            > : //; $x[0] = "$ynet_base/$x[0]";
            > : $x[3] =~ s/$x[3]/<A HREF=\"$x[0]\">$x[3]<\/A>/;
            > : @x = @x[7,3,1];
            > : print "<TR CLASS=DATA$i VALIGN=TOP><TD>\n";
            > : print join("</TD><TD>",@x);
            > : print "</TD></TR>\n\n";
            > : $i = $i ? 0 : 1;
            > : $c++ ;
            > : }
            >
            > Okay, let's re-write the until block:
            >
            > my $toggle = 0;
            > my $counter = 1;
            > until (eof FH) {
            > my @record = map scalar <FH>, 1 .. 4;
            >
            > last unless $record[0] =~ /openWin\('([^']*)/;
            > chomp $record[3];
            > my $link = qq|<A HREF="$ynet_base$1">$record[3]</A>|;
            >
            > print qq|<TR CLASS="DATA$toggle" VALIGN="TOP"><TD>\n|;
            > print join("</TD><TD>", $counter++, $link, $record[1]);
            > print "</TD></TR>\n\n";
            > $toggle = $toggle ? 0 : 1;
            > }
            >
            > That seems to fix it as for as I can tell. Let us know if you
            > need more help.
            >
            > HTH,
            > Charles K. Clarkson
            > --
            > Clarkson Energy Homes, Inc.
            > CJ Web Work - Domains for Real Estate Investors.
            >
            > E Pluribus Unum -- One from many.
            >
            >
            >
            >
            >
            >
            > Unsubscribing info is here:
            http://help.yahoo.com/help/us/groups/groups-32.html
            >
            > Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
            >
            >
            >
          Your message has been successfully submitted and would be delivered to recipients shortly.