2016-03-21 6 views
0

Ich bin neu bei Perl. Ich versuche, eine Array-Spalte in einer Postgres-Ansicht mit einem Perl-Skript auszuwählen, aber ich bin nicht sicher, wie das skalare Array, wie es in Perl kommt, in ein Perl-Array aufgeteilt wird, so dass ich durch jedes Feld gehen kann.Wie verarbeitet man ein postgres-Array in Perl?

Welche Ratschläge können Sie anbieten?

(mit Postgres 9.3, relativ neue Perl)

#!/usr/bin/perl 
use strict; 
use warnings; 
use DBI; 
use Data::Dumper; 
# open database connection 
my $dbh = DBI- >connect("dbi:Pg:dbname=$db::DB_name;host=$db::DB_host;port=$db::DB_port","$db::DB_user","$db::DB_pwd"); 
if (!defined $dbh) {&log_print("Cannot connect to database!\n"); die"dieing...\n";} 
#fetch record from postgres database 
$sth = $dbh->prepare("select progno, track_numbers from processing"); 
if (!defined $sth) { die "Cannot prepare statement: $DBI::errstr\n";} 
$rows = $sth->execute(); 
my ($p_progno, $p_track_numbers) = $sth->fetchrow(); 
$sth->finish; 
#output scalar 
&log_print("$p_track_numbers\n"); 
#result: ARRAY(0x1975d38) 
print Dumper($p_track_numbers); 
#result: 
#$VAR1 = [ 
#   16, 
#   17, 
#   18, 
#   19, 
#   20, 
#   21, 
#   22 
#  ]; 
#? How do I step through each $p_track_numbers in a foreach? 
+0

Etwas ist mit Ihrem Beispiel falsch. 'fetchrow' ist ein alter Alias ​​für' fetchrow_array', der keine Array-Referenz als eines seiner Listenelemente zurückgibt. –

Antwort

0

Dereferenziere der Array-Referenz durch das Voranstellen der @:

for my $track_number (@$p_track_numbers) { 
    print $track_number, "\n" 
} 
Verwandte Themen