#!/usr/bin/perl require "timelocal.pl"; if ($ARGV[0] =~ /^\d+/) { $repeat = shift } if ($ARGV[0] =~ /^-/) { shift; print '-' x 70, "\n"; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); printf "%04d-%02d-%02d %02d:%02d:%02d\n", $year+1900, $mon+1, $mday, $hour, $min, $sec; } $stocks = uc("@ARGV") # if you run ystocks with no argument on the command line, show these quotes: || 'EXDS GBLX GBIX INAP LVLT NAVI ISLD DIGX INIT PSIX VZ T ATHM AMD INTC LSCC VTSS XLNX ALTR CSCO FDRY FFIV JNPR CIEN SUNW SEG EMC NTAP ASPX VRTS ORCL IFMX INKT AKAM DCLK VRSN ARBA SCNT SAPE AMZN YHOO EBAY COVD MFNX Q GENU WCOM QCOM NOK MOT LU NT CPTH MAIL'; $stocks =~ s/\s+/\+/g; $lynx = "/usr/local/bin/lynx -dump http://finance.yahoo.com/q?s=$stocks&d=v1"; do { if ($repeat) { print `clear; date` } open LYNX, "$lynx |" or die "$0: can't run $lynx\n$!\n"; while () { if (($sym,$time,$price,$frac,$change,$percent,$vol) = /^\s*\[\d+\]([A-Z.]+) ([\d:]+\w+|\w+ \d+) (\d+)(?: ([\d\/]+))? ([+-]?[\d\/ ]+) ([+-]?[\d\.]+%) ([\d,]+)/) { printf "%7s %7s %4d %-5s %12s%10s %13s\n", $time,$sym,$price,$frac,$change,"($percent)",$vol; } elsif (($sym,$time,$price,$frac,$change,$percent,$vol) = /^\s*\[\d+\]([A-Z.]+) ([\d:]+\w+|\w+ \d+) (\d+)(?:\.([\d]+))? ([+-]?[\d\.]+) ([+-]?[\d\.]+%) ([\d,]+)/) { printf "%7s %7s %4d.%-6s%12s%10s %13s\n", $time,$sym,$price,$frac,$change,"($percent)",$vol; } } sleep($repeat) } while($repeat)