/usr/share/doc/libmoose-autobox-perl/examples/units/time.pl is in libmoose-autobox-perl 0.15-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | #!/usr/bin/perl
use strict;
use warnings;
use Moose::Autobox;
{
package # hide me from PAUSE
Units::Time;
use Moose::Role;
use Moose::Autobox;
sub seconds { $_[0] }
sub minutes { $_[0] * 60 }
sub hours { $_[0] * 60->minutes }
sub days { $_[0] * 24->hours }
sub weeks { $_[0] * 7->days }
sub years { $_[0] * 365->days }
sub centuries { $_[0] * 10->years }
sub ago {
my ($self, $time) = @_;
$time ||= time();
$time - $self;
}
sub since {
my ($self, $time) = @_;
$time ||= time();
$time + $self;
}
{
no warnings 'once';
# singular versions
*second = \&seconds;
*minute = \&minutes;
*hour = \&hours;
*day = \&days;
*week = \&weeks;
*year = \&years;
*century = \¢uries;
*til = \&ago;
*from_now = \&since;
}
sub as_string { scalar localtime $_[0] }
}
Moose::Autobox->mixin_additional_role(SCALAR => 'Units::Time');
$\ = "\n";
print "2 days ago was : " . 2->days->ago->as_string;
print "3 weeks from now will be : " . 3->weeks->from_now->as_string;
my $one_week_ago = 1->week->ago;
print "1 day until 1 week ago : " . 1->day->til($one_week_ago)->as_string;
print "2 years since 1 week ago : " . 2->years->since($one_week_ago)->as_string;
=pod
=head1 NAME
Unit::Time
=head1 SYNOPSIS
Moose::Autobox->mixin_additional_role(SCALAR => 'Units::Time');
print "2 days ago was : " . 2->days->ago->as_string;
print "3 weeks from now will be : " . 3->weeks->from_now->as_string;
print "1 day until 1 week ago : " . 1->day->til(1->week->ago)->as_string;
print "2 years since 1 week ago : " . 2->years->since(1->week->ago)->as_string;
=head1 DESCRIPTION
This is a Moose::Autobox port of the perl6 vmethods example.
=head1 AUTHOR
Stevan Little, E<lt>stevan@iinteractive.comE<gt>
=head1 ACKNOLEDGEMENTS
This code was ported from the version in the Pugs
examples/vmethods/ directory. See that for original author
information.
=cut
|