##
$sth->bind_param( $i++, $holidays->{$name}->{$_} ) foreach qw/ name date type federal active /;
####
use SQL::Abstract;
my $sql = SQL::Abstract->new;
while( my ($name,$data) = each %holidays ) {
my %data = ( %$data, name => $name ); # assuming hash only has keys corresponding to cols in table
my($stmt, @bind) = $sql->insert('your_table_name', \%data);
$dbh->do($stmt, {}, @bind);
}