为什么我得到两次“ANSI”而不是第一次“ANSI”而第二次“AnyData”?
#!/usr/bin/perl
use warnings;
use strict;
use 5.010;
use SQL::Parser;
my $parser = SQL::Parser->new();
my @dialects = $parser->list( 'dialects' );
say "available dialects : @dialects"; # AnyData CSV ANSI
my $dialect = $parser->dialect;
say "Current dialect: $dialect"; # ANSI
my $dialect_name = 'AnyData';
$parser->dialect( $dialect_name ); # load a dialect configuration file
$dialect = $parser->dialect; # get the name of the current dialect
say "Current dialect: $dialect"; # ANSI
答案 0 :(得分:4)
这似乎是SQL :: Parser中的(文档?)错误,AFAICT new()
正在调用dialect()
,这可以确保方言只设置一次,从而阻止您重新设置它后来。
这一变化显然是在1.003版本中完成的。
答案 1 :(得分:3)
我得到相同的结果,但如果你在构造函数中指定方言它似乎确实有效:
my $parser = SQL::Parser->new('AnyData', {RaiseError=>1});
say "Current dialect: " . $parser->dialect; # AnyData