2014-07-09 7 views
0

정말 부조리하다고 생각하기 때문에 저를 미치게하는 문제가 있습니다 ... 여기서 끔찍한 분명한 사실은 무엇입니까?Perl, XBase 모듈 : 문자열이 "prepare_select"로 문자열을 통해 전달되는 경우 데이터가 검색되지 않습니다.

이 코드의 작은 조각이다 : 분명히

use XBase; 
use strict; 

my $table = new XBase $filename or die XBase->errstr; 
my $cursor = $table->prepare_select("ID", "NAME", "STREET"); 
while (my @data = $cursor->fetch) { 
    ### do something here, like print "@data\n"; 
} 

이 간단한 코드는 특정 기능을 가지고 : 연결이 만들어지고 데이터는 .. 모든 것이 잘 실행 검색됩니다 ..

..하지만 나는 아래의 코드 조각 같이 문자열의 내용으로 필드 목록을 통과하려고하면, 뭔가 잘못하고 데이터가 검색되지 않습니다 :

use XBase; 
use strict; 

my $test = '"ID", "NAME", "STREET"'; 
my $table = new XBase $filename or die XBase->errstr; 
my $cursor = $table->prepare_select($test); 
while (my @data = $cursor->fetch) { 
    ### do something here, like print "@data\n"; 
} 

가 그 prepare_select 것 같다() 문자열 안에 들어있는 필드 목록을 전혀 좋아하지 않습니다 .. ..하지만 아마도 나는 끔찍한 명백한 일을 놓치고 있습니다.)

크리스

답변

0
->prepare_select('"ID", "NAME", "STREET"') 

->prepare_select("ID", "NAME", "STREET") 

제와 동일하지 않은 초는 각각 2, 4, 6 자 세 strnig 통과하면서 22 개 문자로 구성된 하나의 문자열을 전달한다.

my $fields = '"ID", "NAME", "STREET"'; 
my @fields = $fields =~ /"([^"]*)"/g; 
:

문자열 "ID", "NAME", "STREET"에서 세 개의 문자열 ID, NAME, STREET을 취득하려면 다음을 사용할 수 있습니다