| Number-Compare-Duration documentation | Contained in the Number-Compare-Duration distribution. |
Number::Compare::Duration - numeric comparisons of time durations
Version 0.001
Number::Compare::Duration->new('>10d')->(86400 * 9);
# false, 9 days is not more than 10
See Number::Compare for a basic description.
Number::Compare::Duration uses different magnitudes than Number::Compare. They
are: s for seconds, m for minutes, h for hours, d for days. No
accounting for daylight savings is done; each day is 86400 seconds. The
default magnitude is s (seconds).
Hans Dieter Pearcey, <hdp at cpan.org>
Please report any bugs or feature requests to bug-number-compare-duration at rt.cpan.org, or through
the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Number-Compare-Duration. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc Number::Compare::Duration
You can also look for information at:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Number-Compare-Duration
Copyright 2008 Hans Dieter Pearcey, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Number-Compare-Duration documentation | Contained in the Number-Compare-Duration distribution. |
use strict; use warnings; package Number::Compare::Duration; use base qw(Number::Compare); use Carp (); our $VERSION = '0.001'; my %mult = ( s => 1, m => 60, h => 60 * 60, d => 60 * 60 * 24, ); sub new { my $self = shift; my $class = ref($self) || $self; my $expr = $class->parse_to_perl(shift); return bless eval "sub { $class->parse_input(\$_[0]) $expr }", $class; } sub parse_to_perl { my ($class, $test) = @_; $test =~ m{^ ([<>]=?)? # comparison (.*?) # value ([smhd]?)? # magnitude $}x or Carp::croak "don't understand '$test' as a test"; my $comp = $1 || '=='; my $target = $2; my $mag = $3 || 's'; $target *= $mult{$mag}; return "$comp $target"; } sub parse_input { my ($self, $expr) = @_; $expr =~ m{^ (.*?)([smhd]?)? $}x or Carp::croak "don't understand '$expr' as expression"; return $1 * $mult{$2 || 's'}; } 1; __END__