my @keys = qw(time_value hour_24 minute second hour_12 am_pm); my %time = ( time_value => "2:30:12pm", hour_24 => 14, hour_12 => 2, minute => 30, second => 12, am_pm => "pm" ); my $sql = "INSERT INTO" . " time (" . join(",", @keys) . ")" . " VALUES (" . join(",", ('?') x @keys) . ")"; my $sth = $dbh->prepare($sql); $sth->execute(@time{@keys});