Revision: 16544
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 7, 2009 12:13 by deepsoul
Initial Code
#!/usr/bin/perl
use strict;
print <<EOF;
Welcome to tc.pl, the time calculator.
Expressions may contain hour:minute:second or minute:second literals.
Use socat (http://www.dest-unreach.org/socat/) to add readline capability:
socat READLINE EXEC:./tc.pl,pty
EOF
while( <> )
{
s/\s+//g;
next if /^$/;
if( /([^0-9+\-*\/:.()])/ ) {
print "Illegal character `$1'.\n";
next;
}
s/([0-9]+):([0-9]+):([0-9]+)/(3600*$1+60*$2+$3)/g;
s/([0-9]+):([0-9]+)/(60*$1+$2)/g;
# prevent interpretation as octal:
s/\b0+([1-9][0-9]*)\b/$1/g;
my $secs= 1*sprintf("%.3f", eval);
print $secs;
my $mins= int($secs/60);
$secs -= $mins*60;
$secs= sprintf("%02d", $secs);
print " = $mins:$secs" if $mins;
my $hours= int($mins/60);
$mins -= $hours*60;
$mins= sprintf("%02d", $mins);
print " = $hours:$mins:$secs" if $hours;
print "\n";
}
Initial URL
Initial Description
Use this to add up your overtime. May not be suited for processing untrusted input (e.g. as a CGI script), as the input check is rather rudimentary.
Initial Title
Time calculator
Initial Tags
Initial Language
Perl