Date::Japanese::Holiday を利用して Date::Simple に営業日を加算・減算する method を追加

強引ですが。

package Date::Japanese::BusinessDay;

use strict;
use warnings;

use vars qw($VERSION);
$VERSION = '0.01';

use base qw(Date::Japanese::Holiday);

use Class::Data::Inheritable;

package Date::Simple;

{
    no strict 'refs';
    *{__PACKAGE__ . '::mk_classdata'}
        = \&Class::Data::Inheritable::mk_classdata;
}
__PACKAGE__->mk_classdata(two_day_weekend => 0);

sub increment_business_day {
    my $self = shift;
    my ($day) = @_;

    my $result = $self;
    for (
        my $count = 0,
        my $increment = (0 <= $day ? 1 : -1)
        ;
           (0 <= $day && $count < $day)
        || ($day < 0  && $day < $count)
        ;
    ) {
        $result += $increment;
        next if    $result->is_holiday
                || $result->two_day_weekend == 1
                && $result->day_of_week == 6;
        $count += $increment;
    }
    return $result;
}

sub next_business_day {return shift->add_business_day(1)}
sub prev_business_day {return shift->add_business_day(-1)}

1;

こうやって使います。

use Date::Japanese::BusinessDay;
my $d = Date::Japanese::BusinessDay->new; # or Date::Simple->new;
$d->two_day_weekend(1);
$d->increment_business_day(10);
$d->increment_business_day(-10);

two_day_weekend に 1 を設定すると、土曜日を休日として計算します。