我有一个问题让我发疯,因为我觉得这很荒谬.. 我在这里错过了多么可怕的事情?
这是一小段代码:
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 :(得分:0)
->prepare_select('"ID", "NAME", "STREET"')
与
不同->prepare_select("ID", "NAME", "STREET")
第一个字符串传递一个由22个字符组成的字符串,而第二个字符串分别传递三个字符串,分别为2,4和6个字符。
要从字符串ID
中获取三个字符串NAME
,STREET
,"ID", "NAME", "STREET"
,您可以使用以下内容:
my $fields = '"ID", "NAME", "STREET"';
my @fields = $fields =~ /"([^"]*)"/g;