use DBI; my ($connect_string, $table, @columns) = @_? @_: @ARGV; my $dbh = DBI->connect( "dbi:ODBC:$connect_string", undef, undef, { RaiseError => 1 }, ); my @placeholders = map {'?'} @columns; my $insert_statement = do { local $" = "\n, "; "Insert into $table (@columns) values (@placeholders)"; }; my $sth = $dbh->prepare($insert_statement); while (<>) { chomp; my @values = split /\t/; $sth->execute(@values); }