Blame examples/dm_date

Packit Service 653591
#!/usr/bin/perl -w
Packit Service 653591
# Copyright (c) 2009-2017 Sullivan Beck.  All rights reserved.
Packit Service 653591
# This program is free software; you can redistribute it and/or modify it
Packit Service 653591
# under the same terms as Perl itself.
Packit Service 653591
Packit Service 653591
###############################################################################
Packit Service 653591
###############################################################################
Packit Service 653591
Packit Service 653591
require 5.010000;
Packit Service 653591
use Date::Manip::Date;
Packit Service 653591
use IO::File;
Packit Service 653591
use strict;
Packit Service 653591
use warnings;
Packit Service 653591
Packit Service 653591
###############################################################################
Packit Service 653591
# HELP
Packit Service 653591
###############################################################################
Packit Service 653591
Packit Service 653591
our($usage);
Packit Service 653591
my $COM = $0;
Packit Service 653591
$COM =~ s/^.*\///;
Packit Service 653591
Packit Service 653591
$usage=
Packit Service 653591
  "usage: $COM OPTIONS
Packit Service 653591
      -h/--help        : Print help.
Packit Service 653591
Packit Service 653591
      Options to tell which date to print (only one of
Packit Service 653591
      the following should be entered... if none are,
Packit Service 653591
      'now' is printed).
Packit Service 653591
Packit Service 653591
      -d/--date=STRING : Print information about that date.
Packit Service 653591
      -f/--file=FILE   : Print out each date (1/line) in FILE
Packit Service 653591
      -r/--reference=FILE
Packit Service 653591
                       : Print out the last modification
Packit Service 653591
                         time of FILE
Packit Service 653591
Packit Service 653591
      Other options
Packit Service 653591
Packit Service 653591
      -R/--rfc-2822    : Print the date in RFC 2822 format
Packit Service 653591
                         (any +FORMAT string is ignored)
Packit Service 653591
                         Mon, 07 Aug 2006 12:34:56 -0600
Packit Service 653591
      -u/--utc/--universal:
Packit Service 653591
                         Converts date(s) to UT time.
Packit Service 653591
";
Packit Service 653591
Packit Service 653591
=pod
Packit Service 653591
Packit Service 653591
=head1 NAME
Packit Service 653591
Packit Service 653591
dm_date - print out the system date and time
Packit Service 653591
Packit Service 653591
=head1 SYNOPSIS
Packit Service 653591
Packit Service 653591
This performs the same operation as the unix 'date' command, but using
Packit Service 653591
the Date::Manip module.
Packit Service 653591
Packit Service 653591
   dm_date [OPTION]... [+FORMAT]
Packit Service 653591
Packit Service 653591
=head1 DESCRIPTION
Packit Service 653591
Packit Service 653591
This displays information about the current system time, or some
Packit Service 653591
other time. Options are:
Packit Service 653591
Packit Service 653591
=over 4
Packit Service 653591
Packit Service 653591
=item -h, --help
Packit Service 653591
Packit Service 653591
Print online help.
Packit Service 653591
Packit Service 653591
=item -d STRING, --date=STRING
Packit Service 653591
Packit Service 653591
Display time described by STRING. STRING can be any string which can
Packit Service 653591
be parsed by Date::Manip.  Please refer to the Date::Manip::Date
Packit Service 653591
documentation for details.
Packit Service 653591
Packit Service 653591
=item -f DATEFILE, --file=DATEFILE
Packit Service 653591
Packit Service 653591
This reads each line in DATEFILE, and extracts a date from it and
Packit Service 653591
prints out the information.
Packit Service 653591
Packit Service 653591
Blank lines and lines starting with a pound (#) are ignored. Lines
Packit Service 653591
not containing a valid date are also ignored.
Packit Service 653591
Packit Service 653591
=item -r FILE, --reference=FILE
Packit Service 653591
Packit Service 653591
Displays the last modification time of FILE.
Packit Service 653591
Packit Service 653591
=item -R, --rfc-2822
Packit Service 653591
Packit Service 653591
Displayc the date and time in RFC 2822 format.
Packit Service 653591
Packit Service 653591
Example: Mon, 07 Aug 2006 12:34:56 -0600
Packit Service 653591
Packit Service 653591
=item -u, --utc, --universal
Packit Service 653591
Packit Service 653591
Converts the date to UT (GMT) and prints out the information.
Packit Service 653591
Packit Service 653591
=back
Packit Service 653591
Packit Service 653591
Only one of -d, -f, or -r should be included. If more than
Packit Service 653591
one is included, the first one from the list (-d, -f, -r)
Packit Service 653591
is used and any other is ignored.
Packit Service 653591
Packit Service 653591
The format string starts with a plus (+) and contains any
Packit Service 653591
of the format directives described in Date::Manip::Date.
Packit Service 653591
Packit Service 653591
=head1 KNOWN BUGS
Packit Service 653591
Packit Service 653591
None known.
Packit Service 653591
Packit Service 653591
=head1 BUGS AND QUESTIONS
Packit Service 653591
Packit Service 653591
Please refer to the Date::Manip::Problems documentation for
Packit Service 653591
information on submitting bug reports or questions to the author.
Packit Service 653591
Packit Service 653591
=head1 SEE ALSO
Packit Service 653591
Packit Service 653591
Date::Manip::Date
Packit Service 653591
Packit Service 653591
=head1 LICENSE
Packit Service 653591
Packit Service 653591
This script is free software; you can redistribute it and/or
Packit Service 653591
modify it under the same terms as Perl itself.
Packit Service 653591
Packit Service 653591
=head1 AUTHOR
Packit Service 653591
Packit Service 653591
Sullivan Beck (sbeck@cpan.org)
Packit Service 653591
Packit Service 653591
=cut
Packit Service 653591
Packit Service 653591
###############################################################################
Packit Service 653591
# PARSE ARGUMENTS
Packit Service 653591
###############################################################################
Packit Service 653591
Packit Service 653591
our($date,$file,$ref,$rfc,$ut,$format);
Packit Service 653591
Packit Service 653591
while ($_ = shift) {
Packit Service 653591
Packit Service 653591
   (print $usage),   exit  if ($_ eq "-h"   ||  $_ eq "--help");
Packit Service 653591
Packit Service 653591
   $date = shift,    next  if ($_ eq "-d"   ||  $_ eq "--date");
Packit Service 653591
   $date = $1,       next  if ($_ =~ /^\-\-date=(.*)/);
Packit Service 653591
Packit Service 653591
   $file = shift,    next  if ($_ eq "-f"   ||  $_ eq "--file");
Packit Service 653591
   $file = $1,       next  if ($_ =~ /^\-\-file=(.*)/);
Packit Service 653591
Packit Service 653591
   $ref = shift,     next  if ($_ eq "-r"   ||  $_ eq "--reference");
Packit Service 653591
   $ref = $1,        next  if ($_ =~ /^\-\-reference=(.*)/);
Packit Service 653591
Packit Service 653591
   $rfc = 1,         next  if ($_ eq "-R"   ||  $_ eq "--rfc-2822");
Packit Service 653591
   $ut = 1,          next  if ($_ eq "-u"   ||  $_ eq "--utc"  ||  $_ eq "--universal");
Packit Service 653591
Packit Service 653591
   $format = $_,     last  if ($_ =~ s/^\+//);
Packit Service 653591
   die $usage;
Packit Service 653591
}
Packit Service 653591
Packit Service 653591
if ($rfc) {
Packit Service 653591
   $format ='%a, %d %b %Y %H:%M:%S %z';
Packit Service 653591
}
Packit Service 653591
Packit Service 653591
if (@ARGV  ||  ! $format) {
Packit Service 653591
   die $usage;
Packit Service 653591
}
Packit Service 653591
Packit Service 653591
############################################################################
Packit Service 653591
# MAIN PROGRAM
Packit Service 653591
############################################################################
Packit Service 653591
Packit Service 653591
Packit Service 653591
my $d = new Date::Manip::Date;
Packit Service 653591
Packit Service 653591
if      ($date) {
Packit Service 653591
   my $err = $d->parse($date);
Packit Service 653591
   exit 1  if ($err);
Packit Service 653591
   $d->convert("GMT")  if ($ut);
Packit Service 653591
   print $d->printf($format),"\n";
Packit Service 653591
Packit Service 653591
} elsif ($file) {
Packit Service 653591
   my $in = new IO::File;
Packit Service 653591
   $in->open($file)  ||  die "ERROR: unable to open date file: $file\n\n$usage";
Packit Service 653591
   my @in = <$in>;
Packit Service 653591
   $in->close();
Packit Service 653591
   chomp(@in);
Packit Service 653591
Packit Service 653591
   foreach my $date (@in) {
Packit Service 653591
      $date =~ s/\#.*//;
Packit Service 653591
      $date =~ s/\s*$//;
Packit Service 653591
      next  if (! $date);
Packit Service 653591
Packit Service 653591
      my $err = $d->parse($date);
Packit Service 653591
      next  if ($err);
Packit Service 653591
      $d->convert("GMT")  if ($ut);
Packit Service 653591
      print $d->printf($format),"\n";
Packit Service 653591
   }
Packit Service 653591
Packit Service 653591
} elsif ($ref) {
Packit Service 653591
   if (-e $ref) {
Packit Service 653591
      my $date = ( stat($ref) )[9];
Packit Service 653591
      my $err = $d->parse("epoch $date");
Packit Service 653591
      exit  if ($err);
Packit Service 653591
      $d->convert("GMT")  if ($ut);
Packit Service 653591
      print $d->printf($format),"\n";
Packit Service 653591
   }
Packit Service 653591
Packit Service 653591
} else {
Packit Service 653591
   my $err = $d->parse("now");
Packit Service 653591
   exit 1  if ($err);
Packit Service 653591
   $d->convert("GMT")  if ($ut);
Packit Service 653591
   print $d->printf($format),"\n";
Packit Service 653591
}
Packit Service 653591
Packit Service 653591
Packit Service 653591
# Local Variables:
Packit Service 653591
# mode: cperl
Packit Service 653591
# indent-tabs-mode: nil
Packit Service 653591
# cperl-indent-level: 3
Packit Service 653591
# cperl-continued-statement-offset: 2
Packit Service 653591
# cperl-continued-brace-offset: 0
Packit Service 653591
# cperl-brace-offset: 0
Packit Service 653591
# cperl-brace-imaginary-offset: 0
Packit Service 653591
# cperl-label-offset: 0
Packit Service 653591
# End: