home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / perl / scripts-convex / clones / cal next >
Encoding:
Text File  |  1990-06-04  |  1.0 KB  |  60 lines

  1. #!/usr/bin/perl
  2.  
  3. $[ = 1;
  4.  
  5. $CALPATH = '/usr/local/bin/concal';
  6.  
  7. ($program = $0) =~ s%.*/%%;
  8.  
  9. ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
  10.  
  11. @months = ( "january ", "february", "march", "april", "may", "june", 
  12.         "july", "august", "september", "october", "november",
  13.         "december" );
  14.  
  15. $mon++;
  16. $year += 1900;
  17.  
  18. if ($#ARGV == 0) {
  19.     do cal($mon, $year);
  20.  
  21. if ($#ARGV > 2) {
  22.     print stderr "usage: $program [month] year\n";
  23.     exit 1;
  24.  
  25. if ($#ARGV == 2) {
  26.     $year = $ARGV[2];
  27.  
  28. if ($ARGV[1] =~ /^\d+$/) {
  29.     if ($ARGV[1] > 12) {
  30.     die "month too big" if $#ARGV == 2;
  31.     $year = $ARGV[1];
  32.     $year += 1900 if $year < 100;
  33.     do cal($year);
  34.     } else {
  35.     do cal($ARGV[1], $year);
  36.     } 
  37. } else {
  38.     do cal(&getmonth($ARGV[1]), $year);
  39.  
  40.  
  41. sub cal { 
  42.     die "year too big"  if $_[2] > 9999;
  43.     exec $CALPATH, @_;
  44.     die "can't exec $CALPATH: $!";
  45. }
  46.  
  47. sub getmonth {
  48.     local($mon) = @_;
  49.  
  50.     for ($i = 1; $i <= 12; $i++) {
  51.     return $i if $months[$i] =~ /^$mon/oi;
  52.     } 
  53.  
  54.     die "$mon is not a month name";
  55.