This is the modified code. Note that I commented out the
external file I/O stuff and just used the internal __DATA__
(which incidently should use only two "_"s before and after.
you had three). Also, I added "use strict", which you
should get into the habit of using, and "my"s where
appropriate. Think also about using indentation to make
your control structures more readable.
use strict;
my $linenum = 1;
my $altnum = 1;
my $bgc;
# open(FILE, "<data/data.txt");
# my @lines = <FILE>;
my @lines = <DATA>;
# close(FILE);
# prints out table header
print "<center><table border=\"0\" cellpadding=\"3\" width=\"596\" bgc
+olor=\"#000080\"><tr><td bgcolor=\"#000050\" colspan=\"2\">Free Host
+Name<\/font><\/td><td bgcolor=\"#000050\" align=\"center\">Space<\/fo
+nt><\/td><td bgcolor=\"#000050\" align=\"center\">Uploads<\/font><\/t
+d><td bgcolor=\"#000050\" align=\"center\">Forced Ads<\/font><\/td><t
+d bgcolor=\"#000050\" align=\"center\">Scripts<\/font><\/td><td bgcol
+or=\"#000050\" align=\"center\">Features<\/font><\/td><\/tr>\n";
+
foreach my $item (@lines[9..19]) {
my @thisArray = split(/\|/, $item);
# just alternating td bgcolor with these next two lines
if ($altnum eq "1") {
$altnum = 0;
$bgc = "#000080";
} elsif ($altnum eq "0") {
$altnum = 1;
$bgc = "#000050";
}
print "<tr><td bgcolor=\"#000050\" align=\"center\">@thisArray[0]<
+\/font><\/td><td bgcolor=\"$bgc\"><a href=\"goto.cgi?@thisArray[0]\">
+@thisArray[1]<\/a><\/font><\/td><td bgcolor=\"$bgc\" align=\"center\"
+>@thisArray[6] MB<\/font><\/td><td bgcolor=\"$bgc\">@thisArray[7]<\/f
+ont><\/td><td bgcolor=\"$bgc\" align=\"center\">@thisArray[5]<\/font
+><\/td><td bgcolor=\"$bgc\" align=\"center\">@thisArray[10]<\/font><
+\/td><td bgcolor=\"#000050\" align=\"center\"><a href=\"more.cgi?@thi
+sArray[0]\">more<\/font><\/a><\/td><\/tr>";
$linenum++;
}
print "<\/td><\/tr><\/table>\n\n";
__DATA__
1|0 catch|english|personal|http://www.0catch.com|popup|100|ftp browser
+ fp|advanced basic|domainhosting subdomain counter form guestbook|col
+lection|
2|100megsfree|english|personal|http://www.100megsfree.com|banner|100|f
+tp browser email|advanced basic|subdomain messageboard form guestbook
+|collection|
3|10mbfree|english|personal|http://www.10mbfree.com|other|10|browser||
+subdomain messageboard guestbook|collection|
4|15m4u|english|personal business game|http://www.15m4u.cjb.net|no ads
+|15|ftp email||php subdomain ssi cgi-bin|cgi-bin|
5|1hwy|english|personal|http://www.1hwy.com|banner|0|ftp browser|advan
+ced basic|subdomain counter form guestbook|collection|
6|20megsfree.com|english|personal business game|http://www.20megsfree.
+com|banner|20|ftp browser email|advanced basic|pop email subdomain co
+unter form guestbook|collection|
7|20megs|english|personal|http://www.20megs.com/||20|browser|advanced
+basic|messageboard guestbook|collection|
8|2d adventure|english|game|http://www.2dadventure.com|button|999|brow
+ser|basic||no|
9|30mbfree|english|personal|http://www.30mbfree.com|no ads|0|browser|b
+asic|messageboard form guestbook|collection|
10|321website|english|personal|http://www.321website.com/|adframe|0|br
+owser|advanced|messageboard shopping cart guestbook|collection|
11|3dracing|english|game|http://www.3dracing.com/hosting.htm|banner|20
+|ftp||domainhosting subdomain cgi-bin|cgi-bin|
12|3hosting4u|english|personal business|http://www.3hosting4u.com|no a
+ds|10|browser|advanced basic|counter form guestbook|collection|
13|3megsfree|english|personal|http://www.3megsfree.com|footbanner|0|br
+owser|advanced|counter guestbook|collection|
14|4business|english|business|http://www.4business.net/|banner|20|ftp
+fp||domainhosting subdomain cgi-bin|cgi-bin|
15|4eit|english|personal business game|http://www.4eit.com|no ads|20|f
+tp email||php realvideo realaudio pop email domainhosting subdomain m
+ysql ssi cgi-bin form guestbook|cgi-bin|
16|4nx2|english|personal business|http://www.4nx2.com|no ads|20|browse
+r|advanced|php mysql|php|
17|4office|english|business|http://www.4office.net/|banner|999|ftp||su
+bdomain cgi-bin|cgi-bin|
18|50megs|english|personal|http://www.50megs.com/|topbanner|50|ftp bro
+wser|advanced basic|domainhosting subdomain messageboard form guestbo
+ok|collection|
19|75megs|english|personal business|http://www.75megs.com/|popup/banne
+r|75|ftp browser|advanced basic|domainhosting subdomain counter form
+guestbook|collection| +
20|800mph|english|personal|http://800mph.com/|adframe|0|browser|advanc
+ed|realvideo realaudio pop email subdomain messageboard counter form
+guestbook|collection|
Update: If it wasn't so late, I'd have used a hash
with the first field (linenum/ID) as the key field. Maybe
a monk in a different timezone could illustrate. As it is,
I just fudged the 10-20 with 9-19, which is fine for quick
and dirty, but not too aesthetic.
@a=split??,'just lose the ego and get involved!';
for(split??,'afqtw{|~'){print $a[ord($_)-97]} | [reply] [d/l] |
Thanks jlongino,
I have taught myself this code, and someties my approach towards things my be uncoventional, like writting a line all the way out in a straight line, without indentation. It is how I read it best. I know that "{" starts a funtion and "}" stops it. Anything in between is what I want to do. Sorry about the __data__ mistake, this was the first time I have every posted. Anyway I have my script working now, but could you tell me why using the "my"s are so important? And here is a slice from my new code.
$cmd = $in{'cmd'};
$this = $in{'this'};
if (($cmd eq 'display') && ($this eq 'page1')) {
$title = "Free Hosting Table Page 1";
$bline = 0;
$eline = 99;
&displaypage;
}
elsif (($cmd eq 'display') && ($this eq 'page2')) {
$title = "Free Hosting Table Page 2";
$bline = 100;
$eline = 199;
&displaypage;
}
elsif (($cmd eq 'display') && ($this eq 'page3')) {
$title = "Free Hosting Table Page 3";
$bline = 200;
$eline = 299;
&displaypage;
}
elsif (($cmd eq 'display') && ($this eq 'page4')) {
$title = "Free Hosting Table Page 4";
$bline = 300;
$eline = 399;
&displaypage;
}
elsif (($cmd eq 'display') && ($this eq 'page5')) {
$title = "Free Hosting Table Page 5";
$bline = 400;
$eline = 499;
&displaypage;
}
elsif (($cmd eq 'display') && ($this eq 'page6')) {
$title = "Free Hosting Table Page 6";
$bline = 500;
$eline = 599;
&displaypage;
}
elsif (($cmd eq 'display') && ($this eq 'page7')) {
$title = "Free Hosting Table Page 7";
$bline = 600;
$eline = 629;
&displaypage;
}
sub displaypage {
&print_header;
open(FILE, "<data/data.txt");
@lines = <FILE>;
close(FILE);
$linenum = 1;
$altnum = 1;
print "<center><table border=\"0\" cellpadding=\"3\" width=\"598\" bgc
+olor=\"#000080\"><tr bgcolor=\"#000099\"><td colspan=\"2\">Free Host
+Name<\/td><td align=\"center\">Space<\/td><td align=\"center\">Upload
+s<\/td><td align=\"center\">Forced Ads<\/td><td align=\"center\">Scri
+pts<\/td><td align=\"center\">Features<\/td><\/tr>\n";
foreach $item (@lines[$bline..$eline]) {
@thisArray = split(/\|/, $item);
if ($altnum eq "1") { $altnum = 0; $bgc = "#000080"; }
elsif ($altnum eq "0") { $altnum = 1; $bgc = "#000099"; }
print "<tr bgcolor=\"$bgc\"><td align=\"center\">@thisArray[0]<\/td><t
+d><a href=\"goto.cgi?@thisArray[0]\">@thisArray[1]<\/a><\/td><td alig
+n=\"center\">@thisArray[6] MB<\/td><td>@thisArray[7]<\/td><td align=\
+"center\">@thisArray[5]<\/td><td align=\"center\">@thisArray[10]<\/td
+><td align=\"center\"><a href=\"more.cgi?@thisArray[0]\">more<\/a><\/
+td><\/tr>";
$linenum++;
}
&last;
}
sub last {
print "<\/td><\/tr><\/table>\n\n";
&print_footer;
}
sub print_header {
print <<"EOF";
<html>
<head>
<title>$title</title>
<STYLE>
<!--
body { scrollbar-face-color: #000099;scrollbar-shadow-color: #ffffff;s
+crollbar-highlight-color: #ffffff;scrollbar-3dlight-color: #0000ff;sc
+rollbar-darkshadow-color: #000070;scrollbar-track-color: #000000;scro
+llbar-arrow-color: #0000ff }
td { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11
+px }
.head { font-family: Verdana, Arial, Helvetica; font-size: 24px; white
+-space: nowrap; letter-spacing: .1em}
.block { font-family: Verdana, Arial, Helvetica; font-size: 12px; whit
+e-space: nowrap; letter-spacing: .1em}
.alltext { font-family: Verdana, Arial, Helvetica, sans-serif; font-si
+ze: 11px; letter-spacing: .05em}
//-->
</STYLE>
</head>
<BODY BGCOLOR="#000080" TEXT="#FFFFFF" LINK="#ffff66" VLINK="#ffff66"
+>
<center>
<span class="head">
$title<br>
</span>
<p>
<span class="alltext">
EOF
}
sub print_footer {
print <<"EOF";
</span>
<p><br>
</body></html>
EOF
}
| [reply] [d/l] |
. . . could you tell me why using the "my"s are so
important?
This faq will explain better than I can:
What's
the difference between dynamic and lexical (static)
scoping? Between local() and my()?
As for indenting your code, nobody can force you to comment
or indent your code so that it is more readable, and, you
can probably get away with it as long as you're programming
for yourself. But if it is for your instructor, boss,
friends, coworkers or fellow perlmonks, you and your work
will be appreciated more for it. :)
@a=split??,'just lose the ego and get involved!';
for(split??,'afqtw{|~'){print $a[ord($_)-97]} | [reply] |