Finance-Quant-Quotes
view release on metacpan or search on metacpan
Revision history for Perl extension Finance::Quant::Quotes.
0.01 Tue Jan 24 05:07:14 2012
- original version; created by h2xs 1.23 with options
-XA Finance::Quant::Quotes
Changes
Makefile.PL
MANIFEST
README
t/Finance-Quant-Quotes.t
lib/Finance/Quant/Quotes.pm
MYMETA.json view on Meta::CPAN
{
"abstract" : "unknown",
"author" : [
"sante zero <hagen@>"
],
"dynamic_config" : 0,
"generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150",
"license" : [
"unknown"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
"version" : "2"
},
"name" : "Finance-Quant-Quotes",
"no_index" : {
"directory" : [
"t",
"inc"
]
},
"prereqs" : {
"build" : {
"requires" : {
"ExtUtils::MakeMaker" : 0
}
},
"configure" : {
"requires" : {
"ExtUtils::MakeMaker" : 0
}
},
"runtime" : {
"requires" : {}
}
},
"release_status" : "stable",
"version" : "0.01"
}
---
abstract: unknown
author:
- 'sante zero <hagen@>'
build_requires:
ExtUtils::MakeMaker: 0
configure_requires:
ExtUtils::MakeMaker: 0
dynamic_config: 0
generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150'
license: unknown
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
name: Finance-Quant-Quotes
no_index:
directory:
- t
- inc
requires: {}
version: 0.01
Makefile.PL view on Meta::CPAN
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
NAME => 'Finance::Quant::Quotes',
VERSION_FROM => 'lib/Finance/Quant/Quotes.pm', # finds $VERSION
PREREQ_PM => {}, # e.g., Module::Name => 1.1
($] >= 5.005 ? ## Add these new keywords supported since 5.005
(ABSTRACT_FROM => 'lib/Finance/Quant/Quotes.pm', # retrieve abstract from module
AUTHOR => 'sante zero <hagen@>') : ()),
);
Finance-Quant-Quotes version 0.01
=================================
The README is used to introduce the module and provide instructions on
how to install the module, any machine dependencies it may have (for
example C compilers and installed libraries) and any other information
that should be provided before the module is installed.
A README file is required for CPAN modules since CPAN extracts the
README file from a module distribution so that people browsing the
archive can use it get an idea of the modules uses. It is usually a
good idea to provide version information here so that people can
decide whether fixes for the module are worth downloading.
INSTALLATION
To install this module type the following:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
This module requires these other modules and libraries:
blah blah blah
COPYRIGHT AND LICENCE
Put the correct copyright and licence information here.
Copyright (C) 2012 by sante zero
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.12.4 or,
at your option, any later version of Perl 5 you may have available.
lib/Finance/Quant/Quotes.pm view on Meta::CPAN
#!/usr/bin/perl -X
package Finance::Quant::Quotes;
use strict;
use warnings;
use LWP::UserAgent;
require Exporter;
our @ISA = qw(Exporter);
# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.
# This allows declaration use Finance::Quant::Quotes ':all';
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
# will save memory.
our %EXPORT_TAGS = ( 'all' => [ qw(
) ] );
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
our @EXPORT = qw(
get
);
our $VERSION = '0.01';
sub get {
my ($symbol, $startdate, $enddate, $agent) = @_;
print "fetching data...\n";
my $dat = _fetch($symbol, $startdate, $enddate, $agent); # csv file, 1st row = header
return if(!$dat);
my @q = split /\n/, $dat;
my @header = split /,/, shift @q;
my %quotes = map { $_ => [] } @header;
for my $q (@q) {
my @val = split ',', $q;
unshift @{$quotes{$header[$_]}}, $val[$_] for 0..$#val; # unshift instead of push if data listed latest 1st & oldest last
}
# open OUT, ">$symbol.csv";
# print OUT $dat;
# close OUT;
# print "data written to $symbol.csv.\n";
return \%quotes;
}
sub _fetch {
my ($symbol, $startdate, $enddate, $interval, $agent) = @_;
my $url = "http://chart.yahoo.com/table.csv?";
my $freq = "g=$interval"; # d: daily, w: weekly, m: monthly
my $stock = "s=$symbol";
my @start = split '-', $startdate;
my @end = split '-', $enddate;
$startdate = "a=" . ($start[0]-1) . "&b=$start[1]&c=$start[2]";
$enddate = "d=" . ($end[0]-1) . "&e=$end[1]&f=$end[2]";
$url .= "$startdate&$enddate&$stock&y=0&$freq&ignore=.csv";
my $ua = new LWP::UserAgent(agent=>$agent,timeout=>5);
my $request = new HTTP::Request('GET',$url);
my $response = $ua->request($request);
if ($response->is_success) {
return $response->content;
} else {
# warn "Cannot fetch $url (status ", $response->code, " ", $response->message, ")\n";
return 0;
}
}
1;
__END__
t/Finance-Quant-Quotes.t view on Meta::CPAN
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl Finance-Quant-Quotes.t'
#########################
# change 'tests => 1' to 'tests => last_test_to_print';
use strict;
use warnings;
use Test::More tests => 1;
BEGIN { use_ok('Finance::Quant::Quotes') };
#########################
# Insert your test code below, the Test::More module is use()ed here so read
# its man page ( perldoc Test::More ) for help writing this test script.
( run in 0.309 second using v1.01-cache-2.11-cpan-73692580452 )