diff --git a/Finance-Quote-1.17/lib/Finance/Quote/Tiaacref.pm b/Finance-Quote-1.17/lib/Finance/Quote/Tiaacref.pm index 5e1c8a1..5650ef7 100644 --- a/Finance-Quote-1.17/lib/Finance/Quote/Tiaacref.pm +++ b/Finance-Quote-1.17/lib/Finance/Quote/Tiaacref.pm @@ -33,7 +33,7 @@ require Crypt::SSLeay; use strict; -use vars qw($VERSION $CREF_URL $TIAA_URL +use vars qw($VERSION $CREF_URL $CREF_URL_INST $TIAA_URL %tiaacref_ids %tiaacref_locs %tiaacref_vals); use LWP::UserAgent; @@ -44,7 +44,9 @@ $VERSION = '1.17'; # URLs of where to obtain information. # This used to be different for the CREF and TIAA annuities, but this changed. -$CREF_URL = ("https://www3.tiaa-cref.org/ddata/DownloadData?"); +$CREF_URL = ("http://www.tiaa-cref.org/public/performance/retirement/data/results?"); +$CREF_URL_INST = ("http://www.tiaa-cref.org/public/performance/institutional/data/results?"); +#https://www3.tiaa-cref.org/ddata/DownloadData?"); sub methods { return (tiaacref=>\&tiaacref); } @@ -96,6 +98,82 @@ sub labels { return (tiaacref => [qw/method symbol exchange name date isodate na # TIAA-CREF Social Choice Equity: TCSCX # TIAA-CREF Managed Allocation: TIMAX +# TIAA-CREF Retirement Fund - Bond: TIDRX +# TIAA-CREF Retirement Fund - Bond Index: TBIRX +# TIAA-CREF Retirement Fund - Bond Plus: TCBRX +# TIAA-CREF Retirement Fund - Emerging Markets Equity: TEMSX +# TIAA-CREF Retirement Fund - Emerging Markets Equity Index: TEQSX +# TIAA-CREF Retirement Fund - Equity Index: TIQRX +# TIAA-CREF Retirement Fund - Growth & Income: TRGIX +# TIAA-CREF Retirement Fund - High-Yield: TIHRX +# TIAA-CREF Retirement Fund - Inflation-Linked Bond: TIKRX +# TIAA-CREF Retirement Fund - International Equity: TRERX +# TIAA-CREF Retirement Fund - International Equity Index: TRIEX +# TIAA-CREF Retirement Fund - Large-Cap Growth: TILRX +# TIAA-CREF Retirement Fund - Large-Cap Growth Index: TRIRX +# TIAA-CREF Retirement Fund - Large-Cap Value: TRLCX +# TIAA-CREF Retirement Fund - Large-Cap Value Index: TRCVX +# TIAA-CREF Retirement Fund - Lifecycle 2010: TCLEX +# TIAA-CREF Retirement Fund - Lifecycle 2015: TCLIX +# TIAA-CREF Retirement Fund - Lifecycle 2020: TCLTX +# TIAA-CREF Retirement Fund - Lifecycle 2025: TCLFX +# TIAA-CREF Retirement Fund - Lifecycle 2030: TCLNX +# TIAA-CREF Retirement Fund - Lifecycle 2035: TCLRX +# TIAA-CREF Retirement Fund - Lifecycle 2040: TCLOX +# TIAA-CREF Retirement Fund - Lifecycle 2045: TTFRX +# TIAA-CREF Retirement Fund - Lifecycle 2050: TLFRX +# TIAA-CREF Retirement Fund - Lifecycle Retirement Income: TLIRX +# TIAA-CREF Retirement Fund - Managed Allocation: TITRX +# TIAA-CREF Retirement Fund - Mid-Cap Growth: TRGMX +# TIAA-CREF Retirement Fund - Mid-Cap Value: TRVRX +# TIAA-CREF Retirement Fund - Money Market: TIEXX +# TIAA-CREF Retirement Fund - Real Estate Securities: TRRSX +# TIAA-CREF Retirement Fund - S&P 500 Index: TRSPX +# TIAA-CREF Retirement Fund - Short-Term Bond: TISRX +# TIAA-CREF Retirement Fund - Cap Blend Index: TRBIX +# TIAA-CREF Retirement Fund - Small-Cap Equity: TRSEX +# TIAA-CREF Retirement Fund - Social Choice Equity: TRSCX + +# TIAA-CREF Institutional Fund - Bond: TIBDX 1835 +# TIAA-CREF Institutional Fund - Bond Index: TBIIX 1837 +# TIAA-CREF Institutional Fund - Bond Plus: TIBFX 1827 +# TIAA-CREF Institutional Fund - Emerging Markets Equity: TEMLX 1848 +# TIAA-CREF Institutional Fund - Emerging Markets Equity Index: TEQLX 1849 +# TIAA-CREF Institutional Fund - Enhanced International Equity Index: TFIIX 1822 +# TIAA-CREF Institutional Fund - Enhanced Large-Cap Growth Index: TLIIX 1820 +# TIAA-CREF Institutional Fund - Enhanced Large-Cap Value Index: TEVIX 1821 +# TIAA-CREF Institutional Fund - Equity Index: TIEIX 1833 +# TIAA-CREF Institutional Fund - Growth & Income: TIGRX 1832 +# TIAA-CREF Institutional Fund - High-Yield: TIHYX 1826 +# TIAA-CREF Institutional Fund - Inflation-Linked Bond: TIILX 1605 +# TIAA-CREF Institutional Fund - International Equity: TIIEX 1830 +# TIAA-CREF Institutional Fund - International Equity Index: TCIEX 1615 +# TIAA-CREF Institutional Fund - Large-Cap Growth: TILGX 1824 +# TIAA-CREF Institutional Fund - Large-Cap Growth Index: TILIX 1607 +# TIAA-CREF Institutional Fund - Large-Cap Value: TRLIX 1601 +# TIAA-CREF Institutional Fund - Large-Cap Value Index: TILVX 1608 +# TIAA-CREF Institutional Fund - Lifecycle 2010: TCTIX 1810 +# TIAA-CREF Institutional Fund - Lifecycle 2015: TCNIX 1811 +# TIAA-CREF Institutional Fund - Lifecycle 2020: TCWIX 1812 +# TIAA-CREF Institutional Fund - Lifecycle 2025: TCYIX 1813 +# TIAA-CREF Institutional Fund - Lifecycle 2030: TCRIX 1814 +# TIAA-CREF Institutional Fund - Lifecycle 2035: TCIIX 1815 +# TIAA-CREF Institutional Fund - Lifecycle 2040: TCOIX 1816 +# TIAA-CREF Institutional Fund - Lifecycle 2045: TTFIX 1817 +# TIAA-CREF Institutional Fund - Lifecycle 2050: TFTIX 1818 +# TIAA-CREF Institutional Fund - Lifecycle Retirement Income: TLRIX 1819 +# TIAA-CREF Institutional Fund - Managed Allocation: TIMIX 1825 +# TIAA-CREF Institutional Fund - Mid-Cap Growth: TRPWX 1602 +# TIAA-CREF Institutional Fund - Mid-Cap Value: TIMVX 1603 +# TIAA-CREF Institutional Fund - Money Market: TCIXX 1836 +# TIAA-CREF Institutional Fund - Real Estate Securities: TIREX 1604 +# TIAA-CREF Institutional Fund - S&P 500 Index: TISPX 1606 +# TIAA-CREF Institutional Fund - Short-Term Bond: TISIX 1828 +# TIAA-CREF Institutional Fund - Small-Cap Blend Index: TISBX 1612 +# TIAA-CREF Institutional Fund - Small-Cap Equity: TISEX 1634 +# TIAA-CREF Institutional Fund - Social Choice Equity: TISCX 1834 +# TIAA-CREF Institutional Fund - Tax-Exempt Bond: TITIX 1829 + # # This subroutine was written by Brent Neal <brentn@users.sourceforge.net> @@ -157,6 +235,84 @@ sub tiaacref $tiaacref_ids{"TCSCX"} = "TIAA-CREF Social Choice Equity"; $tiaacref_ids{"TIMAX"} = "TIAA-CREF Managed Allocation"; + + # Retirement class funds + $tiaacref_ids{"TIDRX"} = "Retirement Fund - Bond"; + $tiaacref_ids{"TBIRX"} = "Retirement Fund - Bond Index"; + $tiaacref_ids{"TCBRX"} = "Retirement Fund - Bond Plus"; + $tiaacref_ids{"TEMSX"} = "Retirement Fund - Emerging Markets Equity"; + $tiaacref_ids{"TEQSX"} = "Retirement Fund - Emerging Markets Equity Index"; + $tiaacref_ids{"TIQRX"} = "Retirement Fund - Equity Index"; + $tiaacref_ids{"TRGIX"} = "Retirement Fund - Growth & Income"; + $tiaacref_ids{"TIHRX"} = "Retirement Fund - High-Yield"; + $tiaacref_ids{"TIKRX"} = "Retirement Fund - Inflation-Linked Bond"; + $tiaacref_ids{"TRERX"} = "Retirement Fund - International Equity"; + $tiaacref_ids{"TRIEX"} = "Retirement Fund - International Equity Index"; + $tiaacref_ids{"TILRX"} = "Retirement Fund - Large-Cap Growth"; + $tiaacref_ids{"TRIRX"} = "Retirement Fund - Large-Cap Growth Index"; + $tiaacref_ids{"TRLCX"} = "Retirement Fund - Large-Cap Value"; + $tiaacref_ids{"TRCVX"} = "Retirement Fund - Large-Cap Value Index"; + $tiaacref_ids{"TCLEX"} = "Retirement Fund - Lifecycle 2010"; + $tiaacref_ids{"TCLIX"} = "Retirement Fund - Lifecycle 2015"; + $tiaacref_ids{"TCLTX"} = "Retirement Fund - Lifecycle 2020"; + $tiaacref_ids{"TCLFX"} = "Retirement Fund - Lifecycle 2025"; + $tiaacref_ids{"TCLNX"} = "Retirement Fund - Lifecycle 2030"; + $tiaacref_ids{"TCLRX"} = "Retirement Fund - Lifecycle 2035"; + $tiaacref_ids{"TCLOX"} = "Retirement Fund - Lifecycle 2040"; + $tiaacref_ids{"TTFRX"} = "Retirement Fund - Lifecycle 2045"; + $tiaacref_ids{"TLFRX"} = "Retirement Fund - Lifecycle 2050"; + $tiaacref_ids{"TLIRX"} = "Retirement Fund - Lifecycle Retirement Income"; + $tiaacref_ids{"TITRX"} = "Retirement Fund - Managed Allocation"; + $tiaacref_ids{"TRGMX"} = "Retirement Fund - Mid-Cap Growth"; + $tiaacref_ids{"TRVRX"} = "Retirement Fund - Mid-Cap Value"; + $tiaacref_ids{"TIEXX"} = "Retirement Fund - Money Market"; + $tiaacref_ids{"TRRSX"} = "Retirement Fund - Real Estate Securities"; + $tiaacref_ids{"TRSPX"} = "Retirement Fund - S&P 500 Index"; + $tiaacref_ids{"TISRX"} = "Retirement Fund - Short-Term Bond"; + $tiaacref_ids{"TRBIX"} = "Retirement Fund - Small-Cap Blend Index"; + $tiaacref_ids{"TRSEX"} = "Retirement Fund - Small-Cap Equity"; + $tiaacref_ids{"TRSCX"} = "Retirement Fund - Social Choice Equity"; + + #Institutional class funds + $tiaacref_ids{"TIBDX"} = "Institutional Fund - Bond"; + $tiaacref_ids{"TBIIX"} = "Institutional Fund - Bond Index"; + $tiaacref_ids{"TIBFX"} = "Institutional Fund - Bond Plus"; + $tiaacref_ids{"TEMLX"} = "Institutional Fund - Emerging Markets Equity"; + $tiaacref_ids{"TEQLX"} = "Institutional Fund - Emerging Markets Equity Index"; + $tiaacref_ids{"TFIIX"} = "Institutional Fund - Enhanced International Equity Index"; + $tiaacref_ids{"TLIIX"} = "Institutional Fund - Enhanced Large-Cap Growth Index"; + $tiaacref_ids{"TEVIX"} = "Institutional Fund - Enhanced Large-Cap Value Index"; + $tiaacref_ids{"TIEIX"} = "Institutional Fund - Equity Index"; + $tiaacref_ids{"TIGRX"} = "Institutional Fund - Growth & Income"; + $tiaacref_ids{"TIHYX"} = "Institutional Fund - High-Yield"; + $tiaacref_ids{"TIILX"} = "Institutional Fund - Inflation-Linked Bond"; + $tiaacref_ids{"TIIEX"} = "Institutional Fund - International Equity"; + $tiaacref_ids{"TCIEX"} = "Institutional Fund - International Equity Index"; + $tiaacref_ids{"TILGX"} = "Institutional Fund - Large-Cap Growth"; + $tiaacref_ids{"TILIX"} = "Institutional Fund - Large-Cap Growth Index"; + $tiaacref_ids{"TRLIX"} = "Institutional Fund - Large-Cap Value"; + $tiaacref_ids{"TILVX"} = "Institutional Fund - Large-Cap Value Index"; + $tiaacref_ids{"TCTIX"} = "Institutional Fund - Lifecycle 2010"; + $tiaacref_ids{"TCNIX"} = "Institutional Fund - Lifecycle 2015"; + $tiaacref_ids{"TCWIX"} = "Institutional Fund - Lifecycle 2020"; + $tiaacref_ids{"TCYIX"} = "Institutional Fund - Lifecycle 2025"; + $tiaacref_ids{"TCRIX"} = "Institutional Fund - Lifecycle 2030"; + $tiaacref_ids{"TCIIX"} = "Institutional Fund - Lifecycle 2035"; + $tiaacref_ids{"TCOIX"} = "Institutional Fund - Lifecycle 2040"; + $tiaacref_ids{"TTFIX"} = "Institutional Fund - Lifecycle 2045"; + $tiaacref_ids{"TFTIX"} = "Institutional Fund - Lifecycle 2050"; + $tiaacref_ids{"TLRIX"} = "Institutional Fund - Lifecycle Retirement Income"; + $tiaacref_ids{"TIMIX"} = "Institutional Fund - Managed Allocation"; + $tiaacref_ids{"TRPWX"} = "Institutional Fund - Mid-Cap Growth"; + $tiaacref_ids{"TIMVX"} = "Institutional Fund - Mid-Cap Value"; + $tiaacref_ids{"TCIXX"} = "Institutional Fund - Money Market"; + $tiaacref_ids{"TIREX"} = "Institutional Fund - Real Estate Securities"; + $tiaacref_ids{"TISPX"} = "Institutional Fund - S&P 500 Index"; + $tiaacref_ids{"TISIX"} = "Institutional Fund - Short-Term Bond"; + $tiaacref_ids{"TISBX"} = "Institutional Fund - Small-Cap Blend Index"; + $tiaacref_ids{"TISEX"} = "Institutional Fund - Small-Cap Equity"; + $tiaacref_ids{"TISCX"} = "Institutional Fund - Social Choice Equity"; + $tiaacref_ids{"TITIX"} = "Institutional Fund - Tax-Exempt Bond"; } if (! %tiaacref_vals) { @@ -200,6 +356,82 @@ sub tiaacref $tiaacref_vals{"TCSCX"} = "83"; $tiaacref_vals{"TIMAX"} = "74"; + + $tiaacref_vals{"TIDRX"} = "1641"; + $tiaacref_vals{"TBIRX"} = "1660"; + $tiaacref_vals{"TCBRX"} = "1638"; + $tiaacref_vals{"TEMSX"} = "1671"; + $tiaacref_vals{"TEQSX"} = "1672"; + $tiaacref_vals{"TIQRX"} = "1643"; + $tiaacref_vals{"TRGIX"} = "1616"; + $tiaacref_vals{"TIHRX"} = "1637"; + $tiaacref_vals{"TIKRX"} = "1640"; + $tiaacref_vals{"TRERX"} = "1618"; + $tiaacref_vals{"TRIEX"} = "1632"; + $tiaacref_vals{"TILRX"} = "1635"; + $tiaacref_vals{"TRIRX"} = "1624"; + $tiaacref_vals{"TRLCX"} = "1619"; + $tiaacref_vals{"TRCVX"} = "1625"; + $tiaacref_vals{"TCLEX"} = "1650"; + $tiaacref_vals{"TCLIX"} = "1651"; + $tiaacref_vals{"TCLTX"} = "1652"; + $tiaacref_vals{"TCLFX"} = "1653"; + $tiaacref_vals{"TCLNX"} = "1654"; + $tiaacref_vals{"TCLRX"} = "1655"; + $tiaacref_vals{"TCLOX"} = "1656"; + $tiaacref_vals{"TTFRX"} = "1657"; + $tiaacref_vals{"TLFRX"} = "1658"; + $tiaacref_vals{"TLIRX"} = "1659"; + $tiaacref_vals{"TITRX"} = "1636"; + $tiaacref_vals{"TRGMX"} = "1620"; + $tiaacref_vals{"TRVRX"} = "1621"; + $tiaacref_vals{"TIEXX"} = "1642"; + $tiaacref_vals{"TRRSX"} = "1622"; + $tiaacref_vals{"TRSPX"} = "1623"; + $tiaacref_vals{"TISRX"} = "1639"; + $tiaacref_vals{"TRBIX"} = "1629"; + $tiaacref_vals{"TRSEX"} = "1633"; + $tiaacref_vals{"TRSCX"} = "1617"; + + $tiaacref_vals{"TIBDX"} = "1835"; + $tiaacref_vals{"TBIIX"} = "1837"; + $tiaacref_vals{"TIBFX"} = "1827"; + $tiaacref_vals{"TEMLX"} = "1848"; + $tiaacref_vals{"TEQLX"} = "1849"; + $tiaacref_vals{"TFIIX"} = "1822"; + $tiaacref_vals{"TLIIX"} = "1820"; + $tiaacref_vals{"TEVIX"} = "1821"; + $tiaacref_vals{"TIEIX"} = "1833"; + $tiaacref_vals{"TIGRX"} = "1832"; + $tiaacref_vals{"TIHYX"} = "1826"; + $tiaacref_vals{"TIILX"} = "1605"; + $tiaacref_vals{"TIIEX"} = "1830"; + $tiaacref_vals{"TCIEX"} = "1615"; + $tiaacref_vals{"TILGX"} = "1824"; + $tiaacref_vals{"TILIX"} = "1607"; + $tiaacref_vals{"TRLIX"} = "1601"; + $tiaacref_vals{"TILVX"} = "1608"; + $tiaacref_vals{"TCTIX"} = "1810"; + $tiaacref_vals{"TCNIX"} = "1811"; + $tiaacref_vals{"TCWIX"} = "1812"; + $tiaacref_vals{"TCYIX"} = "1813"; + $tiaacref_vals{"TCRIX"} = "1814"; + $tiaacref_vals{"TCIIX"} = "1815"; + $tiaacref_vals{"TCOIX"} = "1816"; + $tiaacref_vals{"TTFIX"} = "1817"; + $tiaacref_vals{"TFTIX"} = "1818"; + $tiaacref_vals{"TLRIX"} = "1819"; + $tiaacref_vals{"TIMIX"} = "1825"; + $tiaacref_vals{"TRPWX"} = "1602"; + $tiaacref_vals{"TIMVX"} = "1603"; + $tiaacref_vals{"TCIXX"} = "1836"; + $tiaacref_vals{"TIREX"} = "1604"; + $tiaacref_vals{"TISPX"} = "1606"; + $tiaacref_vals{"TISIX"} = "1828"; + $tiaacref_vals{"TISBX"} = "1612"; + $tiaacref_vals{"TISEX"} = "1634"; + $tiaacref_vals{"TISCX"} = "1834"; + $tiaacref_vals{"TITIX"} = "1829"; } #The location doesn't matter anymore. @@ -247,29 +479,116 @@ sub tiaacref $tiaacref_locs{"TCSCX"} = 1; $tiaacref_locs{"TIMAX"} = 1; + + $tiaacref_locs{"TIDRX"} = 1; + $tiaacref_locs{"TBIRX"} = 1; + $tiaacref_locs{"TCBRX"} = 1; + $tiaacref_locs{"TEMSX"} = 1; + $tiaacref_locs{"TEQSX"} = 1; + $tiaacref_locs{"TIQRX"} = 1; + $tiaacref_locs{"TRGIX"} = 1; + $tiaacref_locs{"TIHRX"} = 1; + $tiaacref_locs{"TIKRX"} = 1; + $tiaacref_locs{"TRERX"} = 1; + $tiaacref_locs{"TRIEX"} = 1; + $tiaacref_locs{"TILRX"} = 1; + $tiaacref_locs{"TRIRX"} = 1; + $tiaacref_locs{"TRLCX"} = 1; + $tiaacref_locs{"TRCVX"} = 1; + $tiaacref_locs{"TCLEX"} = 1; + $tiaacref_locs{"TCLIX"} = 1; + $tiaacref_locs{"TCLTX"} = 1; + $tiaacref_locs{"TCLFX"} = 1; + $tiaacref_locs{"TCLNX"} = 1; + $tiaacref_locs{"TCLRX"} = 1; + $tiaacref_locs{"TCLOX"} = 1; + $tiaacref_locs{"TTFRX"} = 1; + $tiaacref_locs{"TLFRX"} = 1; + $tiaacref_locs{"TLIRX"} = 1; + $tiaacref_locs{"TITRX"} = 1; + $tiaacref_locs{"TRGMX"} = 1; + $tiaacref_locs{"TRVRX"} = 1; + $tiaacref_locs{"TIEXX"} = 1; + $tiaacref_locs{"TRRSX"} = 1; + $tiaacref_locs{"TRSPX"} = 1; + $tiaacref_locs{"TISRX"} = 1; + $tiaacref_locs{"TRBIX"} = 1; + $tiaacref_locs{"TRSEX"} = 1; + $tiaacref_locs{"TRSCX"} = 1; + + $tiaacref_locs{"TIBDX"} = 3; + $tiaacref_locs{"TBIIX"} = 3; + $tiaacref_locs{"TIBFX"} = 3; + $tiaacref_locs{"TEMLX"} = 3; + $tiaacref_locs{"TEQLX"} = 3; + $tiaacref_locs{"TFIIX"} = 3; + $tiaacref_locs{"TLIIX"} = 3; + $tiaacref_locs{"TEVIX"} = 3; + $tiaacref_locs{"TIEIX"} = 3; + $tiaacref_locs{"TIGRX"} = 3; + $tiaacref_locs{"TIHYX"} = 3; + $tiaacref_locs{"TIILX"} = 3; + $tiaacref_locs{"TIIEX"} = 3; + $tiaacref_locs{"TCIEX"} = 3; + $tiaacref_locs{"TILGX"} = 3; + $tiaacref_locs{"TILIX"} = 3; + $tiaacref_locs{"TRLIX"} = 3; + $tiaacref_locs{"TILVX"} = 3; + $tiaacref_locs{"TCTIX"} = 3; + $tiaacref_locs{"TCNIX"} = 3; + $tiaacref_locs{"TCWIX"} = 3; + $tiaacref_locs{"TCYIX"} = 3; + $tiaacref_locs{"TCRIX"} = 3; + $tiaacref_locs{"TCIIX"} = 3; + $tiaacref_locs{"TCOIX"} = 3; + $tiaacref_locs{"TTFIX"} = 3; + $tiaacref_locs{"TFTIX"} = 3; + $tiaacref_locs{"TLRIX"} = 3; + $tiaacref_locs{"TIMIX"} = 3; + $tiaacref_locs{"TRPWX"} = 3; + $tiaacref_locs{"TIMVX"} = 3; + $tiaacref_locs{"TCIXX"} = 3; + $tiaacref_locs{"TIREX"} = 3; + $tiaacref_locs{"TISPX"} = 3; + $tiaacref_locs{"TISIX"} = 3; + $tiaacref_locs{"TISBX"} = 3; + $tiaacref_locs{"TISEX"} = 3; + $tiaacref_locs{"TISCX"} = 3; + $tiaacref_locs{"TITIX"} = 3; } my(@funds) = @_; return unless @funds; my(@line); #holds the return from parse_csv my(%info); my(%check); #holds success value if data returned - my($ua,$urlc,$urlt); #useragent and target urls - my($cntc,$cntt); #counters for each of the two url containers + my($ua,$urlc,$urlci,$urlt); #useragent and target urls + my($cntc,$cntci,$cntt); #counters for each of the two url containers my($reply,$qdata); #the reply from TIAA-CREF's cgi and a buffer for the data + my $cbResult = 'cbResults='; + my $cbResulti = 'cbResults='; + + $urlc = $CREF_URL; + $urlc .= "page=input&numdays=2&sqlorder=asc&dldformat=1&submit.x=29&submit.y=7"; + $urlci = $CREF_URL_INST; + $urlci .= "page=input&numdays=2&sqlorder=asc&dldformat=1&submit.x=29&submit.y=7"; -# $url = $TIAACREF_URL; - $urlc = $CREF_URL; $urlt = $TIAA_URL; #Initialize counters for the two types of URL. If either counter is zero, then # that URL will not be retrieved. This is less technically clever than testing #the URL string itself with m/yes/, but its faster. $cntc = 0; + $cntci = 0; $cntt = 0; foreach my $fund (@funds) { if ($tiaacref_ids{$fund}) { if ($tiaacref_locs{$fund} == 1) { $cntc++; - $urlc .= "f" . $cntc . "=" . $tiaacref_vals{$fund} . "&"; + $urlc .= "&fundid" . $tiaacref_vals{$fund} . "=" . $tiaacref_vals{$fund}; + $cbResult .= ($cntc > 1) ? ( "%2C" . $tiaacref_vals{$fund}) : ($tiaacref_vals{$fund}) + } elsif ($tiaacref_locs{$fund} == 3) { + $cntci++; + $urlci .= "&fundid" . $tiaacref_vals{$fund} . "=" . $tiaacref_vals{$fund}; + $cbResulti .= ($cntci > 1) ? ( "%2C" . $tiaacref_vals{$fund}) : ($tiaacref_vals{$fund}) } else { $urlt .= $fund . "=yes&"; $cntt++; @@ -280,8 +599,8 @@ sub tiaacref $info{$fund,"errormsg"} = "Bad symbol"; } } - $urlc .= "days=1"; - $urlc .= "&dldformat=1"; + $urlc .= "&$cbResult"; + $urlci .= "&$cbResulti"; $urlt .= "selected=1"; $qdata =""; @@ -292,15 +611,27 @@ sub tiaacref $qdata .= $reply->content; } } + if ($cntci) { + $reply = $ua->request(GET $urlci); + if ($reply ->is_success) { + $qdata .= $reply->content; + } + } if ($cntt) { $reply = $ua->request(GET $urlt); if ($reply ->is_success) { $qdata .= $reply->content; } } + if (length($qdata)) { - foreach (split('\012',$qdata) ){ + foreach (split(/<br .>/,$qdata) ){ + next unless m/.+,.+/; + s/[\r\n]+//g; + s/^ +//g; + s/ +$//g; @line = $quoter->parse_csv($_); + if (exists $check{$line[0]}) { #did we ask for this data? $info{$line[0],"symbol"} = $line[0]; #in case the caller needs this in the hash $info{$line[0],"exchange"} = "TIAA-CREF"; @@ -398,6 +729,82 @@ The following symbols can be used: TIAA-CREF Social Choice Equity: TCSCX TIAA-CREF Managed Allocation: TIMAX + TIAA-CREF Retirement Fund - Bond: TIDRX + TIAA-CREF Retirement Fund - Bond Index: TBIRX + TIAA-CREF Retirement Fund - Bond Plus: TCBRX + TIAA-CREF Retirement Fund - Emerging Markets Equity: TEMSX + TIAA-CREF Retirement Fund - Emerging Markets Equity Index: TEQSX + TIAA-CREF Retirement Fund - Equity Index: TIQRX + TIAA-CREF Retirement Fund - Growth & Income: TRGIX + TIAA-CREF Retirement Fund - High-Yield: TIHRX + TIAA-CREF Retirement Fund - Inflation-Linked Bond: TIKRX + TIAA-CREF Retirement Fund - International Equity: TRERX + TIAA-CREF Retirement Fund - International Equity Index: TRIEX + TIAA-CREF Retirement Fund - Large-Cap Growth: TILRX + TIAA-CREF Retirement Fund - Large-Cap Growth Index: TRIRX + TIAA-CREF Retirement Fund - Large-Cap Value: TRLCX + TIAA-CREF Retirement Fund - Large-Cap Value Index: TRCVX + TIAA-CREF Retirement Fund - Lifecycle 2010: TCLEX + TIAA-CREF Retirement Fund - Lifecycle 2015: TCLIX + TIAA-CREF Retirement Fund - Lifecycle 2020: TCLTX + TIAA-CREF Retirement Fund - Lifecycle 2025: TCLFX + TIAA-CREF Retirement Fund - Lifecycle 2030: TCLNX + TIAA-CREF Retirement Fund - Lifecycle 2035: TCLRX + TIAA-CREF Retirement Fund - Lifecycle 2040: TCLOX + TIAA-CREF Retirement Fund - Lifecycle 2045: TTFRX + TIAA-CREF Retirement Fund - Lifecycle 2050: LFRX + TIAA-CREF Retirement Fund - Lifecycle Retirement Income: TLIRX + TIAA-CREF Retirement Fund - Managed Allocation: TITRX + TIAA-CREF Retirement Fund - Mid-Cap Growth: TRGMX + TIAA-CREF Retirement Fund - Mid-Cap Value: TRVRX + TIAA-CREF Retirement Fund - Money Market: TIEXX + TIAA-CREF Retirement Fund - Real Estate Securities: TRRSX + TIAA-CREF Retirement Fund - S&P 500 Index: TRSPX + TIAA-CREF Retirement Fund - Short-Term Bond: TISRX + TIAA-CREF Retirement Fund - Cap Blend Index: TRBIX + TIAA-CREF Retirement Fund - Small-Cap Equity: TRSEX + TIAA-CREF Retirement Fund - Social Choice Equity: TRSCX + + TIAA-CREF Institutional Fund - Bond: TIBDX + TIAA-CREF Institutional Fund - Bond Index: TBIIX + TIAA-CREF Institutional Fund - Bond Plus: TIBFX + TIAA-CREF Institutional Fund - Emerging Markets Equity: TEMLX + TIAA-CREF Institutional Fund - Emerging Markets Equity Index: TEQLX + TIAA-CREF Institutional Fund - Enhanced International Equity Index: TFIIX + TIAA-CREF Institutional Fund - Enhanced Large-Cap Growth Index: TLIIX + TIAA-CREF Institutional Fund - Enhanced Large-Cap Value Index: TEVIX + TIAA-CREF Institutional Fund - Equity Index: TIEIX + TIAA-CREF Institutional Fund - Growth & Income: TIGRX + TIAA-CREF Institutional Fund - High-Yield: TIHYX + TIAA-CREF Institutional Fund - Inflation-Linked Bond: TIILX + TIAA-CREF Institutional Fund - International Equity: TIIEX + TIAA-CREF Institutional Fund - International Equity Index: TCIEX + TIAA-CREF Institutional Fund - Large-Cap Growth: TILGX + TIAA-CREF Institutional Fund - Large-Cap Growth Index: TILIX + TIAA-CREF Institutional Fund - Large-Cap Value: TRLIX + TIAA-CREF Institutional Fund - Large-Cap Value Index: TILVX + TIAA-CREF Institutional Fund - Lifecycle 2010: TCTIX + TIAA-CREF Institutional Fund - Lifecycle 2015: TCNIX + TIAA-CREF Institutional Fund - Lifecycle 2020: TCWIX + TIAA-CREF Institutional Fund - Lifecycle 2025: TCYIX + TIAA-CREF Institutional Fund - Lifecycle 2030: TCRIX + TIAA-CREF Institutional Fund - Lifecycle 2035: TCIIX + TIAA-CREF Institutional Fund - Lifecycle 2040: TCOIX + TIAA-CREF Institutional Fund - Lifecycle 2045: TTFIX + TIAA-CREF Institutional Fund - Lifecycle 2050: TFTIX + TIAA-CREF Institutional Fund - Lifecycle Retirement Income: TLRIX + TIAA-CREF Institutional Fund - Managed Allocation: TIMIX + TIAA-CREF Institutional Fund - Mid-Cap Growth: TRPWX + TIAA-CREF Institutional Fund - Mid-Cap Value: TIMVX + TIAA-CREF Institutional Fund - Money Market: TCIXX + TIAA-CREF Institutional Fund - Real Estate Securities: TIREX + TIAA-CREF Institutional Fund - S&P 500 Index: TISPX + TIAA-CREF Institutional Fund - Short-Term Bond: TISIX + TIAA-CREF Institutional Fund - Small-Cap Blend Index: TISBX + TIAA-CREF Institutional Fund - Small-Cap Equity: TISEX + TIAA-CREF Institutional Fund - Social Choice Equity: TISCX + TIAA-CREF Institutional Fund - Tax-Exempt Bond: TITIX + This module is loaded by default on a Finance::Quote object. It's also possible to load it explicitly by passing "Tiaacref" in to the