in reply to How do I extract (x) number of lines from database?

You stated that the lines are separated by "|". But the rest of your narrative implies that you meant that the fields of each line are separated by "|". So I am assuming the latter:
use strict; my ($begline, $endline); open DATA, "<indb.txt"; my @lines = <DATA>; chomp @lines; foreach ($begline..$endline) { my ($var1, $var2, $var3) = split '\|', $lines[$_]; print "$var1 $var2 $var3\n"; # do whatever }
If this isn't what you meant, please clarify.

Update: Of course you need to initialize $begline, $endline as needed. Also, keep in mind that @lines begins with an index of zero, not one.

@a=split??,'just lose the ego and get involved!';
for(split??,'afqtw{|~'){print $a[ord($_)-97]}

Replies are listed 'Best First'.
Re: Re: How do I extract (x) number of lines from database?
by Mosley (Novice) on Sep 21, 2001 at 08:11 UTC
    My current code is as follows, if you could show me how to extract lines 10 thru 20, Thanks.
    $linenum = 1; $altnum = 1; open(FILE, "<data/data.txt"); @lines = <FILE>; 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 $item (@lines) { @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]<\/fo +nt><\/td><td bgcolor=\"$bgc\"><a href=\"goto.cgi?@thisArray[0]\">@thi +sArray[1]<\/a><\/font><\/td><td bgcolor=\"$bgc\" align=\"center\">@th +isArray[6] MB<\/font><\/td><td bgcolor=\"$bgc\">@thisArray[7]<\/font> +<\/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?@thisArr +ay[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|
      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]}
        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 }