I have this working on Alpha with (5.16.2) and without (5.10.0) 64 bit
integer support, and on VAX (5.8.4).
Before uploading this to CPAN I'm curious if anyone has a solution for 'mmk
zipdist' mangling the case of filenames. The PAUSE server wants to extract
certain files from the distribution but can't find them because of case
differences.
NAME
VMS::Time - Manipulate OpenVMS binary time values
SYNOPSIS
use VMS::Time ':all';
$now = gettim();
$bin = bintim('01-jan-2010 12:00:00.00');
$asc = asctim($bin);
($year, $month, $day, $hr, $mn, $sc, $cc) = numtim($bin);
$unix = vms_to_epoch($bin);
$vms = epoch_to_vms(time());
DESCRIPTION
These functions provide access to the OpenVMS time system services
SYS$GETTIM, SYS$BINTIM, SYS$ASCTIM, and SYS$NUMTIM. Also provided are
functions for converting between OpenVMS binary times and unix epoch
time values.
EXPORT
None by default. Any function or constant may be imported by name. All
functions can be imported using the tag ':routines'. All constants can
be imported using the tag ':constants'. Routines and constants can be
imported using the tag ':all'.
OVERVIEW
VMS::Time can accept and return VMS times in various formats depending
upon the platform and how perl was built. The routines that return VMS
time values accept a return mode argument that determines the format for
the returned value. Constants are defined for the return modes as
follows.
PACK - Pack format (default)
Returns the time as a string containing an 8 byte OpenVMS time
value.
LONGINT - Integer
Returns the time value as an integer. This is only supported if perl
was built with support for long integers.
FLOAT - Floating point
Returns the time value as a floating point number. Precision may be
lost especially if perl was not built with support for long doubles.
FLOAT is not supported on VAX systems.
HEX - Hex string
Returns the time value as a hex encoded string with a leading '0x'.
BIGINT - Math::BigInt
Returns the time value as a Math::BigInt object. Math::BigInt must
have been previously loaded.
The format for input VMS time values is deduced from the attributes of
the perl variable passed to the function. If the variable contains an
integer, LONGINT format is assumed. If the variable containes a floating
point value, FLOAT format is assumed. If the variable is a string with a
leading '0x', HEX format is assumed. If the variable is an 8 byte
string, PACK format is assumed. If the variable is a Math::BigInt
object, BIGINT format is assumed.
FUNCTIONS
bintim - convert ascii time string to binary
$bin = bintim('01-jan-2010 12:00:00.00'[,$retmode]);
Converts the time string to a VMS time value. $retmode indicates the
format for the returned value as described in the overview section.
asctim - convert binary time to ascii string
$text = asctim([$bin])
Converts an OpenVMS time to its textual presentation. If a binary time
is not provided, the current time is used.
gettim - get current time as binary
$bin = gettim([$retmode]);
Returns the current time. $retmode specifies the format of the returned
value as described in the overview section.
numtim - get current time as array or convert binary time to array
@a = numtim(); # current time
@a = numtim($bin); # supplied time value
Returns an array of numeric values representing the current time. The
values are returned in the order year, month, day, hour, minute, second,
hundredth of seconds.
If no binary time value is provided the current time is used.
epoch_to_vms - convert unix epoch time value to vms time
$bin = epoch_to_vms($tm);
Converts the provided unix time value to OpenVMS binary time format.
vms_to_epoch - convert vms time to unix epoch time value
$tm = vms_to_epoch($bin);
Converts an 8 byte OpenVMS binary time to a unix time value.
SEE ALSO
See the OpenVMS System Services Reference Manual for descriptions of the
referenced system services.
AUTHOR
Thomas Pfau, <[email protected]<gt>
COPYRIGHT AND LICENSE
VMS::Time is Copyright (C) 2013 by Thomas Pfau
This module is free software. You can redistribute it and/or modify it
under the terms of the Artistic License 2.0.
This module is distributed in the hope that it will be useful but it is
provided "as is"and without any express or implied warranties.