ある日付からn営業日前の日付は? (祝日も考慮して)

2007/1/12の8営業日前は2006/12/29。

use Date::Business;
use Date::Japanese::Holiday;

my $origin_date = '20070112';
my $offset     = -8;

my $date = Date::Business->new(
    DATE    => $origin_date,
    OFFSET  => $offset,
    HOLIDAY => \&holiday,
   );
print $date->image, "\n";

sub holiday {
    my ($start, $end) = @_;
    my $n_holiday = 0;

    my $d = Date::Simple::d8($start);
    while ($d->as_d8 <= $end) {
        if (1 <= $d->day_of_week && $d->day_of_week <= 5 && $d->is_holiday) {
            $n_holiday++;
        }
        $d = $d->next;
    }
    return $n_holiday;
}

DateTime::*系とか使ってもっとスマートな方法ないかしらん。