#!/usr/bin/perl -w # # example script showing how to use the Quote perl module. # gets prices for some stocks, for some mutual funds # # This script was originally part of GnuCash. use lib '../lib'; use Finance::Quote; my $q = Finance::Quote->new(); # ----------------------------------- # get quotes for two stocks ... %quotes = $q->yahoo ("IBM", "SGI"); # print some selected values print "NYSE by Yahoo: ", $quotes {"IBM", "name"}, " last price: ", $quotes {"IBM", "last"}, "\n"; print "NYSE by Yahoo: ", $quotes {"SGI", "name"}, " last price: ", $quotes {"SGI", "last"}, "\n"; # loop over and print all values. # Notes that values are stored ion a multi-dimensional associative array foreach $k (sort (keys %quotes)) { ($sym, $attr) = split ($;, $k, 2); $val = $quotes {$sym, $attr}; # $val = $quotes {$k}; # this also works, if desired ... print "\t$sym $attr =\t $val\n"; } print "\n\n"; # ----------------------------------- # get quotes from Fidelity Investments @funds = ("FGRIX", "FNMIX", "FASGX", "FCONX"); %quotes = $q->fidelity (@funds); foreach $f (@funds) { $name = $quotes {$f, "name"}; $nav = $quotes {$f, "nav"}; print "Fidelity Fund $f $name \tNAV = $nav\n"; } print "\n\n"; # ----------------------------------- @funds = ("FGRXX"); %quotes = $q->fidelity (@funds); print "Not all funds have a NAV; some have Yeilds:\n"; foreach $f (@funds) { $name = $quotes {$f, "name"}; $yield = $quotes {$f, "yield"}; print "\tFidelity $f $name 30-day Yield = $yield percent\n"; } print "\n\n"; # ----------------------------------- # demo T. Rowe Price -- same as above @funds = ("PRFDX", "PRIDX"); %quotes = $q->troweprice (@funds); foreach $f (@funds) { $nav = $quotes {$f, "nav"}; $dayte = $quotes {$f, "date"}; print "T. Rowe Price $f NAV = $nav as of $dayte\n"; } print "\n\n"; # ----------------------------------- # demo for ASX. Grab the price of Coles-Myer and Telstra @funds = ("CML","TLS"); %quotes = $q->asx(@funds); foreach $f (@funds) { print "ASX Price of $f is ".$quotes{$f,"last"}." at ". $quotes{$f,"date"}."\n"; } print "\n\n"; # Demo for TIAA-CREF. @funds = qw/CREFstok BOGOname TIAAreal CREFmony/; %quotes = $q->tiaacref(@funds); foreach $f (@funds) { if ($quotes{$f,"success"} == 1) { print "TIAA-CREF Price of ".$quotes{$f,"name"}." is ".$quotes{$f,"nav"}. " at ".$quotes{$f,"date"}."\n"; } else { print "Error: ".$quotes{$f,"errormsg"}." for ".$f."\n"; } } print "\n\n";
#!/usr/bin/perl -w use strict; use lib '../lib'; use Finance::Quote qw/asx/; =head1 NAME chkshares.pl - Check share information. =head1 USAGE chkshares.pl australia TLS CML ITE =head1 NOTES Example program. Demonstrates how to use one of the interface to Finance::Quote. The first argument must be the market. =cut my ($name, $date, $last, $p_change, $high, $low, $volume, $close); format STDOUT_TOP = STOCK REPORT TICKER DATE LAST %CHANGE HIGH LOW VOLUME CLOSE ------------------------------------------------------------------------------- . format STDOUT = @<<<<<< @>>>>>>>>>> @###.### @###.### @###.### @###.### @>>>>>>>> @###.### $name, $date, $last, $p_change, $high, $low, $volume, $close . my $quoter = Finance::Quote->new(); my $market = shift || die "Usage: $0 market stocks\n"; my %quote = $quoter->fetch($market,@ARGV); foreach my $code (@ARGV) { unless ($quote{$code,"success"}) { warn "Lookup of $code failed - ".$quote{$code,"errormsg"}."\n"; next; } $name = $code; $date = $quote{$code,'date'}; $last = $quote{$code,'last'}; $p_change = $quote{$code,'p_change'}; $high = $quote{$code,'high'}; $low = $quote{$code,'low'}; $volume = $quote{$code,'volume'}; $close = $quote{$code,'close'}; write; }