foreach my $sql_data ( @fields ) { $stmt = qq/INSERT INTO temp_sheet (/ . join(',', keys %$sql_data ) . qq/) VALUES (/ . join(',', ('?') x keys %$sql_data ) . qq/)/; $dbh->do( $sql, {}, values %$sql_data ); }