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