my %switch = map { split /:\s+/ } @lines; my @cols = sort keys %switch; my $rows = $dbh->do( "insert into foo (".join(',', @cols).") values (".join(',', ('?')x@cols).")", undef, @switch{@cols} );