#!/usr/bin/perl
####
$start="7:30";
$finish="4:30";
$lunch="1:00";
####
($start_hr, $start_min)=split(/:/, $start);
($finish_hr, $finish_min)=split(/:/, $finish);
($lunch_hr, $lunch_min)=split(/:/, $lunch);
if ($finish_hr < $start_hr) {$finish_hr=$finish_hr+12;}
$start_foo=($start_hr*60)+$start_min;
$finish_foo=($finish_hr*60)+$finish_min;
$lunch_foo=($lunch_hr*60)+$lunch_min;
$total_foo=$finish_foo-$lunch_foo-$start_foo;
$hours=int($total_foo/60);
$mins=$total_foo-($hours*60);
print "$hours:$mins";
----
I've only given it a cursory test, but seems to work...
Hope it helps :)
Solved easily by using a 24hr time format and substituting:
if ($finish_hr < $start_hr) {$finish_hr=$finish_hr+12;}
with:
if ($finish_hr < $start_hr) {$finish_hr=$finish_hr+24;}
(which would then barf at a working day of more than 24hrs, but what the hey...)