#! perl
use strict;
use warnings;
use LWP::Simple;
my @data;
format NASDAQ_HEADER =
SYMBOL Name High Low Close Volume Change +/-
-------------------------------------------------------------------------------------------------------------------------
.
format NASDAQ_FORMAT =
@<<<<< @<<<<<<< @###.##### @###.#### @###.#### @||||||||||| @###.### @##.##
@data
.
for my $i ('O' .. 'Q')
{
# Retrieve data from URL
my $url = 'http://eoddata.com/stocklist/NASDAQ/' . $i . '.htm';
my $str = get($url) or die "Cannot get URL '$url': $!";
print "Retrieved URL: $url\n";
my @array = ($str =~ m/.+?Chart for NASDAQ,\w+?">(.+?)<\/A><\/td>
(.+?)<\/td> | (\d+?\.\d+?)<\/td> | (\d+?\.\d+?)<\/td> | (\d+?\.\d+?)<\/td> | (\d+?,?\d+?,?\d+?)<\/td> | (-?\d+?\.\d+?)<\/td> | <\/td>| (-?\d+?\.\d+?)<\/td>.+?/gi);
# Prepare output file and format
my $out = 'nasdaq_list_format' . $i . '.txt';
open(my $fh, '>', $out) or die "Cannot open file '$out' for writing: $!";
my $ofh = select $fh; # Select filehandle for write()
local $^L = ''; # Suppress form feed
local $% = 1; # Set current page number
local $^ = 'NASDAQ_HEADER'; # Set format header
local $~ = 'NASDAQ_FORMAT'; # Set format
local $= = @array / 8 + 5; # Set lines per page
# Write formatted output to file
write $fh while @data = splice @array, 0, 8;
# Tidy up
close $fh or die "Cannot close file '$out': $!";
select $ofh; # Restore old filehandle (STDIN)
}
| |