xref: /openbsd/gnu/usr.bin/perl/lib/Time/gmtime.pm (revision 404b540a)
1package Time::gmtime;
2use strict;
3use 5.006_001;
4
5use Time::tm;
6
7our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
8BEGIN {
9    use Exporter   ();
10    @ISA         = qw(Exporter Time::tm);
11    @EXPORT      = qw(gmtime gmctime);
12    @EXPORT_OK   = qw(
13			$tm_sec $tm_min $tm_hour $tm_mday
14			$tm_mon $tm_year $tm_wday $tm_yday
15			$tm_isdst
16		    );
17    %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
18    $VERSION     = 1.03;
19}
20use vars      @EXPORT_OK;
21
22sub populate (@) {
23    return unless @_;
24    my $tmob = Time::tm->new();
25    @$tmob = (
26		$tm_sec, $tm_min, $tm_hour, $tm_mday,
27		$tm_mon, $tm_year, $tm_wday, $tm_yday,
28		$tm_isdst )
29	    = @_;
30    return $tmob;
31}
32
33sub gmtime (;$)    { populate CORE::gmtime(@_ ? shift : time)}
34sub gmctime (;$)   { scalar   CORE::gmtime(@_ ? shift : time)}
35
361;
37__END__
38
39=head1 NAME
40
41Time::gmtime - by-name interface to Perl's built-in gmtime() function
42
43=head1 SYNOPSIS
44
45 use Time::gmtime;
46 $gm = gmtime();
47 printf "The day in Greenwich is %s\n",
48    (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[ $gm->wday() ];
49
50 use Time::gmtime qw(:FIELDS);
51 gmtime();
52 printf "The day in Greenwich is %s\n",
53    (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[ $tm_wday ];
54
55 $now = gmctime();
56
57 use Time::gmtime;
58 use File::stat;
59 $date_string = gmctime(stat($file)->mtime);
60
61=head1 DESCRIPTION
62
63This module's default exports override the core gmtime() function,
64replacing it with a version that returns "Time::tm" objects.
65This object has methods that return the similarly named structure field
66name from the C's tm structure from F<time.h>; namely sec, min, hour,
67mday, mon, year, wday, yday, and isdst.
68
69You may also import all the structure fields directly into your namespace
70as regular variables using the :FIELDS import tag.  (Note that this
71still overrides your core functions.)  Access these fields as variables
72named with a preceding C<tm_> in front their method names.  Thus,
73C<$tm_obj-E<gt>mday()> corresponds to $tm_mday if you import the fields.
74
75The gmctime() function provides a way of getting at the
76scalar sense of the original CORE::gmtime() function.
77
78To access this functionality without the core overrides,
79pass the C<use> an empty import list, and then access
80function functions with their full qualified names.
81On the other hand, the built-ins are still available
82via the C<CORE::> pseudo-package.
83
84=head1 NOTE
85
86While this class is currently implemented using the Class::Struct
87module to build a struct-like class, you shouldn't rely upon this.
88
89=head1 AUTHOR
90
91Tom Christiansen
92