sub doSQL { my ( $tablename, $fldnames, $fldvals ) = @_; # change call params: # string, array_ref, array_ref my $sqlstring = "insert into $tablename (", join( ',', @$fldnames ) . ') values (' . join( ',', ('?') x scalar @$fieldnames ) . ')'; my $sth = $dbh->prepare_cached( $sqlstring ); $sth->execute( @$fldvals ); # add error checking as desired... }