#!/usr/bin/perl
##########################################################################
#Process order for ice cream shop
# Use Perl field validation - error displayed on same page
# Repopulate form entry fields
##########################################################################
use CGI "param";
$symbol = param('symbol');
$shares = param('shares');
print "Content-type: text/html \n";
print "\n";
print "";
&print_form(); # call print form subroutine
if ($symbol) { # was a symbol entered?
&get_URL(); # call get URL subroutine
&snip_URL(); # call snip URL subroutine
&print_quote(); # call print quote subroutine
}
print " $msg ";
print "";
exit(0);
#####################################################################
# Print the form
#####################################################################
sub print_form {
print "
Stock Quote
Stock Quote
";
}
############################################################################
# Get an HTML page or other URL from the web
# This one gets a stock quote from yahoo, using:
# "http://quote.yahoo.com/q?s=" and the stock symbol
############################################################################
sub get_URL {
use LWP::UserAgent; #use LWP UserAgent method
$browser = new LWP::UserAgent; #create a new user agent
$url = "http://quote.yahoo.com/q?s=".$symbol; #set up URL & symbol
$req = new HTTP::Request(GET => $url); #create a client request
$resp = $browser->request($req); #send request & get response
$data = $resp->content; #get the URL content
}
########################################################################
# Snip a piece of the URL
# This one snips off the stock quote
########################################################################
sub snip_URL {
$find = "Last Trade";
$foundAt = index($data, $find); #search for $find in $data
if ($foundAt >= 0) { #if found
$quote = substr($data, $foundAt+75, 6); #snip out the quote
}
else {
$msg = "Stock symbol not found";
}
}
############################################################################
# Print the quote
############################################################################
sub print_quote {
$symbol =~ tr/a-z/A-Z/; #translate to upper case
$total = $shares * $quote;
print "
SYMBOL | QUOTE | TOTAL |
$symbol | $quote | $total |
";
}