compare_dates
来自「EM算法的改进」· 代码 · 共 132 行
TXT
132 行
#!/usr/bin/perl## $Id: compare_dates.txt 1339 2006-09-21 19:46:28Z tbailey $# $Log$# Revision 1.1 2005/07/28 23:52:45 nadya# Initial revision### AUTHOR: Timothy L. Bailey# CREATE DATE:$PGM = $0; # name of program$PGM =~ s#.*/##; # remove part up to last slash@args = @ARGV; # arguments to program$| = 1; # flush after all prints$SIG{'INT'} = 'cleanup'; # interrupt handler# Note: so that interrupts work, always use for system calls:# if ($status = system($command)) {&cleanup($status)}# requirespush(@INC, split(":", $ENV{'PATH'})); # look in entire path# defaults%months = (Jan, "00", Feb, "01", Mar, "02", Apr, "03", May, "04", Jun, "05", Jul, "06", Aug, "07", Sep, "08", Oct, "09", Nov, 10, Dec, 11);$usage = <<USAGE; # usage message USAGE: $PGM <mon1> <day1> <time1> <mon2> <day2> <time2> <mon> Jan..Dec <day> day 1..31 <time> time: hh:mm or year: yyyy Compare two dates and exit with status 1 if the second dates is larger (more recent) than the first, with status 0 otherwise. Copyright (2001) Timothy L. Bailey All Rights Reserved. Author: Timothy L. BaileyUSAGE$nargs = 6; # number of required argsif ($#ARGV+1 < $nargs) { &print_usage("$usage", 2); }# get input arguments$i = 0;while ($#ARGV >= 0) { $_ = shift; if ($_ eq "-h") { # help &print_usage("$usage", 2); } elsif ($i<6) { $input[$i++] = $_; } else { &print_usage("$usage", 2); }}## get todays date#($sec, $min, $hour, $mday, $mon, $year, @rest) = localtime(time);$min = "0$min" if ($min < 10);$hour = "0$hour" if ($hour < 10);$mon = "0$mon" if ($mon < 10);$day = $mday;$year = 1900 + $year;$date = "$year $mon $day $hour $min";## construct the two dates from the input#for ($i=0; $i<2; $i++) { # construct date i $_ = shift @input; # get next word of inut $mon[$i] = $months{$_}; $_ = shift @input; # get next word of inut $day[$i] = ($_ >= 10) ? $_ : "0$_"; $_ = shift @input; # get next word of inut if (s/:/ /) { # no year given $time[$i] = $_; # last year or this year? $year[$i] = ("$mon[$i] $day[$i]" gt "$mon $day") ? $year-1 : $year; } else { # year given $time[$i] = "00 00"; # don't know the time $year[$i] = $_; } $date[$i] = "$year[$i] $mon[$i] $day[$i] $time[$i]";} # construct date iif ($date[0] lt $date[1]) { exit(1) } else { exit(0) }# cleanup files&cleanup($status); ################################################################################# Subroutines ################################################################################# ################################################################################## print_usage## Print the usage message and exit.#################################################################################sub print_usage { my($usage, $status) = @_; if (-c STDOUT) { # standard output is a terminal open(C, "| more"); print C $usage; close C; } else { # standard output not a terminal print STDERR $usage; } exit $status;} ################################################################################# cleanup## cleanup stuff#################################################################################sub cleanup { my($status, $msg) = @_; if ($status && "$msg") {print STDERR "$msg: $status\n";} exit($status);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?