Ф-ции localtime, gmtime 6-ым параметром (считать начиная с нуля) возвращают текущий день недели.
0 - воскресенье,
1 - понедельник и т.д.
use Time::Local;
$wday=(localtime)[6];
if ($wday==0)
{ $wday=6;
}
else
{ $wday--;
}
$curtime=timelocal((localtime)[0,1,2,3,4,5]);
$startWeek=$curtime-$wday*24*60*60;
($stday,$stmonth,$styear)=
(localtime($startWeek))[3,4,5]; # первый день недели
$endWeek=$curtime+(6-$wday)*24*60*60;
($endday,$endmonth,$endyear)=
(localtime($endWeek))[3,4,5]; # последний день недели
Потом форматируешь результаты.