2013-10-07 1 views
1

Perl 스크립트에서 'fetchrow_arrayref'를 사용하지 못했습니다. 누가 스크립트에서 잘못 될 지 지적 해 줄 수 있습니까? 니가 나에게 알릴 수있는 것이 무엇이든지 고맙겠습니다. 고맙습니다.펄 스크립트에서 fetchrow_arrayref를 올바르게 사용하는 방법은 무엇입니까?

제가 직면 한 문제는 다음과 같습니다.

(1) print $ id; <-이 것은 $ id의 내용을 인쇄하지 않습니다.

(2) print "$ list [1]"; <-이 명령은 실제 ​​내용 대신 ARRAY (0x8da6978)를 인쇄합니다.

(3) reverse (@list); <- 이것은 @list의 내용을 바꾸지 않습니다.

(4) "@ {$ _} \ n"; < - "\ n"이 작동하지 않습니다. 또한 @ {}이 필요한 이유는 무엇입니까?

(5) print "\ n"; <-이 방법도 효과가 없습니다.

(6) print "@list"; < -이 명령은 ARRAY (0x8da6978)를 인쇄합니다.

(7) print Dumper (@inverse); < -prints는 괜찮지 만 배열의 내용은 바뀌지 않습니다.

#!/usr/bin/perl 

use strict; 
use warnings; 
use DBI; 
use Data::Dumper; 

.... 

my $dbh = DBI->connect($dbname, $dbuser, $dbpassword) || die "Error $DBI::errstr"; 
my $sth = $dbh->prepare("SELECT * FROM name WHERE id = 11"); 
$sth->execute; 

my @list =(); 

while(my $element = $sth->fetchrow_arrayref){ 

    push(@list, $element); 

} 


$sth->finish; 
$dbh->disconnect; 

my ($id, $name, $email, $telephone) = @list; 

print "Content-Type: text/html; charset=UTF-8\n\n"; 

print $id;           (problem 1) 

print "$list[1]";         (problem 2) 

my @inverse = reverse(@list);      (problem 3) 

foreach (@inverse){ 

    print "@{$_} \n";        (problem 4) 

} 

print "\n";           (problem 5) 

print "@list";          (problem 6) 

print Dumper(@inverse);        (problem 7) 

exit; 
+0

무슨 뜻인지 이해해야한다.'$ list [1]'은'$ list -> [1]'을 참조하는'ARRAY (0x8da6978)'을 출력한다. 배열을 중재하는 방법을 이해하려고 노력하십시오. – run

+0

dumper 값을 제공하면 누구든지이 포럼에서 도움을 줄 수 있습니다 .. – run

+0

위 스크립트의 덤퍼 값은 다음과 같습니다. ARRAY (0x9e387a0) 11 [email protected] 03-5725-8830 ARRAY (0x9e387a0) $ VAR1 = [ '11', 'Name', '[email protected]', '03 -5725-8830 ']; 인쇄 "/ n"이 전혀 작동하지 않습니다. –

답변

2

목록의 각 항목은 데이터베이스 테이블의 한 행에 대한 데이터가 포함 된 배열에 대한 참조입니다.

이 :

my ($id, $name, $email, $telephone) = @list; 

은 테이블의 한 행을 처리하는 것으로 보인다.

각 구성원에 대해@list이고 @list이 아니라면 해당 작업을 수행해야합니다.

for my $row (@list) { 
    my ($id, $name, $email, $telephone) = @$row; 
    print $id; 
} 
+0

귀하의 즉각적인 반응에 감사드립니다. 제안한 코드를 시도했지만 여전히 화면에 아무 것도 인쇄하지 않습니다 ... –

+0

수정 된 코드 게시 – AKHolland

0

$ sth-> fetchrow_arrayref는 arrayref를 반환하고 @list에 밀어 넣습니다. 이제 @list 배열에는 모든 인덱스에서 arrayref가 포함되며 참조는 동일합니다. 따라서 @list의 array 값을 다음과 같이 푸시해야합니다. push (@list, @ $ element);