#!/usr/bin/perl -w use strict; use vars qw($SECOND $MINUTE $HOUR $DAY $WEEK); $SECOND = 1; $MINUTE = 60 * $SECOND; # i know, i know $HOUR = 60 * $MINUTE; $DAY = 24 * $HOUR; $WEEK = 7 * $DAY; sub get_lapse { my $last_here = shift; my $difference = time - $last_here; my @params = (); if ($difference >= $WEEK) { push @params, $WEEK, 'week', 'weeks'; } elsif ($difference >= $DAY) { push @params, $DAY, 'day', 'days'; } elsif ($difference >= $HOUR) { push @params, $HOUR, 'hour', 'hours'; } elsif ($difference >= $MINUTE) { push @params, $MINUTE, 'minute', 'minutes'; } else { push @params, $SECOND, 'second', 'seconds'; } # assume $difference is positive my $lapse = int($difference / $params[0] + 0.5); sprintf "%d %s ago", $lapse, $params[$lapse == 1 ? 1 : 2]; } my $last_here = time - $DAY - 10 * $MINUTE; print get_lapse($last_here), "\n";