Perl,XBase模块:如果字段通过字符串传递给“prepare_select”,则不会检索数据

时间:2014-07-09 16:36:17

标签: perl xbase

我有一个问题让我发疯,因为我觉得这很荒谬.. 我在这里错过了多么可怕的事情?

这是一小段代码:

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()根本不喜欢字符串中包含的字段列表.. ..但可能我错过了通常可怕的显而易见的事情......! ;)

克里斯

1 个答案:

答案 0 :(得分:0)

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

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

第一个字符串传递一个由22个字符组成的字符串,而第二个字符串分别传递三个字符串,分别为2,4和6个字符。

要从字符串ID中获取三个字符串NAMESTREET"ID", "NAME", "STREET",您可以使用以下内容:

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