Date-Biorhythm
view release on metacpan or search on metacpan
bin/biorhythm view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use Date::Biorhythm;
use Date::Calc::Object qw(:all);
use Getopt::Long;
sub print_day {
my $biorhythm = shift;
printf(
qq/
'%s' => {
%s => '%1.5f',
%s => '%1.5f',
%s => '%1.5f',
},
/,
$biorhythm->day->string,
'emotional',
$biorhythm->value('emotional'),
'intellectual',
$biorhythm->value('intellectual'),
'physical',
$biorhythm->value('physical'),
);
}
my $__birthday;
my $__day;
my $__range = "2:2";
GetOptions(
"b|birthday=s" => \$__birthday,
"day=s" => \$__day,
"r|range=s" => \$__range,
);
die "--birthday=YYYY-MM-DD" unless ($__birthday);
$__birthday = Date::Calc::Object->new(0, map { s/^0//; $_ } split(/-|\//, $__birthday));
if ($__day) {
$__day = Date::Calc::Object->new(0, map { s/^0//; $_ } split(/-|\//, $__day));
} else {
$__day = Date::Calc::Object->today;
}
my $biorhythm = Date::Biorhythm->new({
name => $ENV{USER} || 'you',
birthday => $__birthday,
day => $__day
});
my ($begin, $end) = split(':', $__range);
die "positive integers please" if ($begin < 0);
die "positive integers please" if ($end < 0);
my $iterations = 1;
print "# $__birthday\n";
print "# $__day\n";
print " {\n";
if ($begin) {
$biorhythm->day($biorhythm->day - $begin);
for (1 .. $begin) {
print_day($biorhythm);
$biorhythm->next;
}
}
print_day($biorhythm);
$biorhythm->next;
if ($end) {
for (1 .. $end) {
print_day($biorhythm);
$biorhythm->next;
}
}
print "\n }\n";
exit 0;
=head1 NAME
biorhythm - biorhythm calculation utility
=head1 SYNOPSIS
Usage:
biorhythm [OPTIONS]
Options:
--birthday, -b YYYY-MM-DD Your birthday.
--day, -d YYYY-MM-DD The day you're interested in.
(default: today)
--range, -r N:M Look N days back and M days forward
(default: 5:5)
Example:
biorhythm --birthday 1970-01-01
=head1 DESCRIPTION
Given a birthday, a day, and a range, this utility will print the values
of the various biorhythms as a Perl data structure.
=cut
( run in 1.052 second using v1.01-cache-2.11-cpan-71847e10f99 )