2009-12-27 4 views
1

Pourquoi est-ce que je reçois deux fois "ANSI" et pas la première fois "ANSI" et la deuxième fois "AnyData"?Comment puis-je définir le dialecte dans SQL :: Parser?

#!/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 

Répondre

4

Cela semble être un bug (? Documentation) dans SQL :: Parser , AFAICT new() appelle le dialect(), ce qui garantit que le dialecte n'est défini qu'une seule fois, ce qui vous empêche de le réinitialiser ultérieurement. Cette modification a apparemment été effectuée dans la version 1.003

3

-je obtenir le même résultat, mais il ne semble pas fonctionner si vous spécifiez le dialecte dans le constructeur:

my $parser = SQL::Parser->new('AnyData', {RaiseError=>1}); 
say "Current dialect: " . $parser->dialect; # AnyData 
Questions connexes