Ich versuche, Daten aus SQL Server-Datenbank mit Perl und dem DBI-Modul zu lesen. Meine Absicht ist es, die Daten zu lesen und sie in eine Textdatei (kommagetrennt) zu drucken. Wenn ich das tue, erhalte ich das Ergebnis wie folgt aus:Trimmen eines Arrays (gefüllt über DBI)
var1,var2,var3
40406,20 ,783
50230,78 ,680
50230,78 ,680
50230,78 ,680
50230,78 ,680
So gibt ein Leerzeichen zwischen den zweiten variablen Daten und dem Komma. Ich habe versucht, dies mit dem Code unten zu trimmen, aber es hat nicht funktioniert. Wie sollte ich meinen Code ändern, um diese Leerzeichen zu entfernen?
Mein Code ist hier:
#!/bin/perl
use warnings;
use strict;
use DBI;
sub trim;
my $dbs = "dbi:ODBC:DRIVER={SQL Server};SERVER={xxxx}";
my ($username, $password) = ('un', 'pwd');
my $dbh = DBI->connect($dbs, $username, $password)
or die "Can't connect to $dbs: $DBI::errstr";
my $sth = $dbh->prepare("select var1, var2, var3 from db.dbo.table")
or die "Can't prepare statement: $DBI::errstr";
$sth->execute();
my $outfile = 'temp.txt';
open OUTFILE, '>', $outfile or die "Unable to open $outfile: $!";
print OUTFILE join(",", @{$sth->{NAME}}), "\n";
while (my @re = $sth->fetchrow_array) {
print OUTFILE join(",", trim(@re)), "\n";
}
close OUTFILE;
$sth->finish();
$dbh->disconnect();
############## subroutines ##################
sub trim($) {
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
}
Sie sind neu, also werde ich Ihnen die Standard-SO-Etikette sagen: 1.- Upvote und Antworten annehmen, besonders wenn sie das sind, was Sie wollten (schlechte Antworten ablehnen) 2.- Ändern Sie Ihre Frage, anstatt Antworten hinzuzufügen, dies ist kein Forum. Froh, dass es funktioniert hat! –
Als Echo auf Vinko empfehle ich Ihnen, seine Antwort zu akzeptieren und die Antworten zu löschen, die Sie als Antworten gepostet haben. –