#!/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

Enter Stock Symbol

Enter Number of Shares

"; } ############################################################################ # 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
"; }