| 1 | package Time::localtime;
|
|---|
| 2 | use strict;
|
|---|
| 3 | use 5.006_001;
|
|---|
| 4 |
|
|---|
| 5 | use Time::tm;
|
|---|
| 6 |
|
|---|
| 7 | our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
|
|---|
| 8 | BEGIN {
|
|---|
| 9 | use Exporter ();
|
|---|
| 10 | @ISA = qw(Exporter Time::tm);
|
|---|
| 11 | @EXPORT = qw(localtime ctime);
|
|---|
| 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.02;
|
|---|
| 19 | }
|
|---|
| 20 | use vars @EXPORT_OK;
|
|---|
| 21 |
|
|---|
| 22 | sub 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 |
|
|---|
| 33 | sub localtime (;$) { populate CORE::localtime(@_ ? shift : time)}
|
|---|
| 34 | sub ctime (;$) { scalar CORE::localtime(@_ ? shift : time) }
|
|---|
| 35 |
|
|---|
| 36 | 1;
|
|---|
| 37 |
|
|---|
| 38 | __END__
|
|---|
| 39 |
|
|---|
| 40 | =head1 NAME
|
|---|
| 41 |
|
|---|
| 42 | Time::localtime - by-name interface to Perl's built-in localtime() function
|
|---|
| 43 |
|
|---|
| 44 | =head1 SYNOPSIS
|
|---|
| 45 |
|
|---|
| 46 | use Time::localtime;
|
|---|
| 47 | printf "Year is %d\n", localtime->year() + 1900;
|
|---|
| 48 |
|
|---|
| 49 | $now = ctime();
|
|---|
| 50 |
|
|---|
| 51 | use Time::localtime;
|
|---|
| 52 | use File::stat;
|
|---|
| 53 | $date_string = ctime(stat($file)->mtime);
|
|---|
| 54 |
|
|---|
| 55 | =head1 DESCRIPTION
|
|---|
| 56 |
|
|---|
| 57 | This module's default exports override the core localtime() function,
|
|---|
| 58 | replacing it with a version that returns "Time::tm" objects.
|
|---|
| 59 | This object has methods that return the similarly named structure field
|
|---|
| 60 | name from the C's tm structure from F<time.h>; namely sec, min, hour,
|
|---|
| 61 | mday, mon, year, wday, yday, and isdst.
|
|---|
| 62 |
|
|---|
| 63 | You may also import all the structure fields directly into your namespace
|
|---|
| 64 | as regular variables using the :FIELDS import tag. (Note that this still
|
|---|
| 65 | overrides your core functions.) Access these fields as
|
|---|
| 66 | variables named with a preceding C<tm_> in front their method names.
|
|---|
| 67 | Thus, C<$tm_obj-E<gt>mday()> corresponds to $tm_mday if you import
|
|---|
| 68 | the fields.
|
|---|
| 69 |
|
|---|
| 70 | The ctime() function provides a way of getting at the
|
|---|
| 71 | scalar sense of the original CORE::localtime() function.
|
|---|
| 72 |
|
|---|
| 73 | To access this functionality without the core overrides,
|
|---|
| 74 | pass the C<use> an empty import list, and then access
|
|---|
| 75 | function functions with their full qualified names.
|
|---|
| 76 | On the other hand, the built-ins are still available
|
|---|
| 77 | via the C<CORE::> pseudo-package.
|
|---|
| 78 |
|
|---|
| 79 | =head1 NOTE
|
|---|
| 80 |
|
|---|
| 81 | While this class is currently implemented using the Class::Struct
|
|---|
| 82 | module to build a struct-like class, you shouldn't rely upon this.
|
|---|
| 83 |
|
|---|
| 84 | =head1 AUTHOR
|
|---|
| 85 |
|
|---|
| 86 | Tom Christiansen
|
|---|