Я пытаюсь прочитать данные из базы данных SQL Server с помощью Perl и модуля DBI. Мое намерение состоит в том, чтобы прочитать данные и распечатать их в текстовый файл (запятая). Когда я делаю это, я получаю результат, как это:Обрезка массива (заполняется через DBI)
var1,var2,var3
40406,20 ,783
50230,78 ,680
50230,78 ,680
50230,78 ,680
50230,78 ,680
Таким образом, существует пробел между вторыми переменными данными и запятой. Я попытался обрезать это, используя код ниже, но это не сработало. Как мне изменить свой код, чтобы избавиться от этих пробелов?
Моего кода здесь: функция
#!/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;
}
Вы новичок, поэтому я расскажу вам стандартный SO-этикет: 1.-Upvote и принимайте ответы, особенно если они то, что вы хотели (downvote плохие ответы) 2.- Измените свой вопрос вместо добавления ответов, это это не форум. Рад, что это сработало! –
Echoing Vinko, я собираюсь предложить вам принять его ответ и удалить ответы, которые вы отправили в качестве ответов. –