#! 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) } #### my $str = get($url) or die "Couldn't get it!" unless defined $str;