0

我有一个让我发疯的问题,因为我真的认为这很荒谬。我在这里错过了什么可怕的显而易见的事情?

这是一小段代码:

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

克里斯

4

1 回答 1

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

不一样

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

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

要从string 中获取三个 string ID, NAME, ,可以使用以下命令:STREET"ID", "NAME", "STREET"

my $fields = '"ID", "NAME", "STREET"';
my @fields = $fields =~ /"([^"]*)"/g;
于 2014-07-09T17:50:47.223 回答