I'm going to offer a two part answer. I'll first answer the question you asked, then I'll answer what it looks like you're really trying to do with your code :-)
1. The question you asked -- how to read data from a newline -- I think you may be making this problem harder then it is. Perl will gladly work with you on this. In fact, by default, it
does read line by line, unless you tell it differently. As an example, check out this code:
# You are using strict, right??? :-)
use strict;
my $adfile = 'banners.dat';
open(FILE, $adfile) || die "Can't open $adfile";
# Loops through the data file, 1 line at a time
while(<FILE>) {
# Split apart the line of data, put it in an array
my @part = split(/\|/, $_);
# Print's the url from the data line
print "$part[0]\n";
}
# Close up the file
close(FILE);
That code will loop through your data file, line by line. By the time it's finished executing, it will print the url from each line of your data file.
However, it doesn't appear that you need to do something with each line, it appears that you want to pick out a random line from your data file, and do something with it. And you're in luck, because it just so happens that
this information is in the FAQ. All you have to do to get a random line from your file is this:
srand;
# This chooses a random line, and puts that line into
# the var $line.
rand($.) < 1 && ($line = $_) while <FILE>;
# Now you can split it
my @part = split(/\|/,$line);
# And then do whatever else with it...
print "$part[0] $part[1] $part[2] ... ";
As a final note, I noticed that you were accessing elements in the @part array by using syntax like
@array[0]. Actually, the correct syntax to access a single element in an array is
$array[0] and $array[1]. It's using the $, instead of the @. The @ is for referring to an entire array or array slice. The $ is used to refer to one, scalar value, such as a single element in an array.
Hope that helps!
-Eric
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.