Используя DBI Perl, как можно объединить результаты fetchrow_arrayref? - PullRequest
2 голосов
/ 03 ноября 2011

Я новичок в Perl и пишу скрипт для извлечения нескольких строк из базы данных:

my @rows = $conn->fetchrow_array(1,2,3);

результатом будет три строки одного столбца.

12345
56789
12376

Как мне объединить их как 12345,56789,56789

Я пытался,

my $list = join ",", @rows. 

Результат: ARRAY(0x14f6de0),ARRAY(0x1508a90),ARRAY(0x15014c0)

Пройдя цикл foreach, просто напечатайте результаты с новой строкой:

12345
56789
12376

Что я делаю не так? я неправильно понял концепцию fetchrow_array?

1 Ответ

6 голосов
/ 03 ноября 2011

Каждая строка является ссылкой на массив (поскольку каждая строка может содержать несколько столбцов).Должно сработать что-то вроде следующего:

#!/usr/bin/perl

use strict; use warnings;

my @rows = (
    [ 12345 ],
    [ 56789 ],
    [ 12376 ],
);

my @vals = map @$_, @rows;

print join(',', @vals), "\n";

Однако вам лучше использовать selectcol_arrayref:

Этот служебный метод объединяет «приготовление»,выполнить и извлечь один столбец из всех строк в один вызов.Возвращает ссылку на массив, содержащий значения первого столбца из каждой строки.

...